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


def format_amount(cents: int) -> str:
    """Renders non-negative integer cents back into a dotted form with exactly two fraction digits."""
    if not isinstance(cents, int) or cents < 0:
        raise ValueError("Invalid cents value")
    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 or any(not isinstance(w, int) or w < 0 for w in weights):
        raise ValueError("Invalid weights list")
    if sum(weights) == 0:
        raise ValueError("Weights sum to zero")
    if total_cents < 0:
        raise ValueError("Invalid total cents value")

    base_amount = [total_cents // len(weights)] * len(weights)
    remainder = total_cents % len(weights)

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

    return base_amount
```