```python
def crate_fill(items: int, crates: int) -> list:
    if crates == 0:
        return []
    if items == 0:
        return []
    
    size = items // crates
    remainder = items % crates
    
    # Create the list of crate sizes
    sizes = [size] * crates
    
    # Distribute the remainder among the leading crates
    for i in range(remainder):
        sizes[i] += 1
    
    return sizes


def crate_total(sizes: list) -> int:
    return sum(sizes)
```