```python
def parse_amount(text: str) -> int:
    """Converts a decimal amount string into integer cents."""
    if not isinstance(text, str):
        raise ValueError("Input must be a string.")
    
    parts = text.split('.')
    if len(parts) > 2 or len(parts[1]) != 2:
        raise ValueError("Invalid amount format. Must be 'digits.(0-99)'.")

    integer_part = parts[0]
    fractional_part = parts[1]

    if not integer_part.isdigit() or not fractional_part.isdigit():
        raise ValueError("Integer and fractional parts must be digits.")
    
    cents = int(integer_part) * 100 + int(fractional_part)
    
    if cents < 0:
        raise ValueError("Amount cannot be negative.")

    return cents

def format_amount(cents: int) -> str:
    """Converts integer cents back into a dotted form with exactly two fraction digits."""
    if cents == 0:
        return "0"
    
    fractional_part = f"{cents % 100:02d}"
    integer_part = f"{cents // 100}"
    
    return f"{integer_part}.{fractional_part}"

def allocate_cents(total_cents: int, weights: list) -> list:
    """Allocates total_cents across the given weights proportionally."""
    if not isinstance(weights, list):
        raise ValueError("Weights must be a list.")
    
    if len(weights) == 0:
        raise ValueError("Weight list cannot be empty.")
    
    for weight in weights:
        if not isinstance(weight, int) or weight < 0:
            raise ValueError("All weights must be non-negative integers.")
    
    total_weight = sum(weights)
    if total_weight == 0:
        raise ValueError("Weights sum to zero.")
    
    if total_cents < 0:
        raise ValueError("Total cents cannot be negative.")
    
    shares = [0] * len(weights)
    remainder = total_cents
    
    for i, weight in enumerate(weights):
        share = total_cents // weight
        shares[i] += share
        
        remainder -= share * weight
    
    while remainder > 0:
        max_index = weights.index(max(remainder))
        shares[max_index] += 1
        remainder -= 1
    
    return shares
```