```python
def parse_amount(text: str) -> int:
    """Turns a decimal amount string into integer cents."""
    if isinstance(text, str):
        parts = text.split('.')
        if len(parts) == 1 and parts[0].isdigit():
            return int(parts[0]) * 100
        elif len(parts) == 2 and parts[0].isdigit() and parts[1].isdigit() and len(parts[1]) == 2:
            return int(parts[0]) * 100 + int(parts[1])
    raise ValueError("Invalid amount format")

def format_amount(cents: int) -> str:
    """Renders non-negative integer cents into a dotted form with exactly two fraction digits."""
    if not isinstance(cents, int) or cents < 0:
        raise ValueError("Non-negative integer expected")
    return f"{cents // 100}.{cents % 100:02d}"

def allocate_cents(total_cents: int, weights: list) -> list:
    """Splits total_cents across a list of integer weights proportionally."""
    if not isinstance(weights, list) or len(weights) == 0:
        raise ValueError("Weight list cannot be empty")
    if any(not isinstance(w, int) or w < 0 for w in weights):
        raise ValueError("Weights must be non-negative integers")
    if sum(weights) == 0:
        raise ValueError("Sum of weights cannot be zero")
    if not isinstance(total_cents, int) or total_cents < 0:
        raise ValueError("Non-negative integer expected")

    total_weight = sum(weights)
    shares = [total_cents * w // total_weight for w in weights]
    remainder = total_cents - sum(shares)

    for i in range(remainder):
        shares[i] += 1

    return shares
```