```python
from typing import List

def crate_fill(items: int, crates: int) -> List[int]:
    if items == 0 or crates == 0:
        return []
    
    total_items_per_crate = items // crates
    
    if items % crates > 0:
        left_over_items = items % crates
    else:
        left_over_items = 0
    
    # Initialize the list of crate sizes with zeros, except for the first one which will be filled later
    sizes = [total_items_per_crate] * crates
    
    # Distribute the extra items to the leading crates
    for i in range(left_over_items):
        sizes[i] += 1
    
    return sizes

def crate_total(sizes: List[int]) -> int:
    return sum(sizes)
```