| Task: | Apple Division |
| Sender: | aalto25a_005 |
| Submission time: | 2025-09-04 14:01:14 +0300 |
| Language: | Python3 (CPython3) |
| Status: | READY |
| Result: | WRONG ANSWER |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.02 s | details |
| #2 | ACCEPTED | 0.02 s | details |
| #3 | ACCEPTED | 0.02 s | details |
| #4 | ACCEPTED | 0.02 s | details |
| #5 | ACCEPTED | 0.02 s | details |
| #6 | ACCEPTED | 0.02 s | details |
| #7 | ACCEPTED | 0.92 s | details |
| #8 | ACCEPTED | 0.94 s | details |
| #9 | ACCEPTED | 0.99 s | details |
| #10 | ACCEPTED | 0.96 s | details |
| #11 | ACCEPTED | 0.98 s | details |
| #12 | ACCEPTED | 0.97 s | details |
| #13 | ACCEPTED | 0.02 s | details |
| #14 | ACCEPTED | 0.02 s | details |
| #15 | ACCEPTED | 0.02 s | details |
| #16 | ACCEPTED | 0.02 s | details |
| #17 | ACCEPTED | 0.97 s | details |
| #18 | WRONG ANSWER | 0.40 s | details |
Code
import sys
from itertools import combinations, chain
dbg = 0
def powerset(iterable):
"powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
s = list(iterable)
return chain.from_iterable(combinations(s, r) for r in range(len(s) + 1))
# strict int
def sint(x):
if isinstance(x, str):
return int(x)
if x.is_integer():
return int(x)
raise ValueError
def ep(*args, **kwargs):
if dbg:
print(*args, file=sys.stderr, **kwargs)
def p(**kwargs):
ep(", ".join([f"{k} = {v}" for (k, v) in kwargs.items()]))
n = sint(input())
p_n = [sint(h) for h in input().split(" ")]
p(n=n, p_n=p_n)
if n == 1:
ep("only one apple, difference is it's weight")
print(p_n[0])
elif n == 0:
ep("no apples, difference is 0")
print(0)
else:
# in this case the powerset is ordered so that it's a complement palindrome, such that the first and last are
# complement sets, and the second first and second last and so on. we should start from the middle
# powerset is even size always
# ps = list(powerset(p_n))
# p(ps=ps)
# max_diff = None
# for i in range(0, sint(len(ps) / 2)):
# diff = abs(sum(ps[i]) - sum(ps[-i - 1]))
# p(considering=(ps[i], ps[-i - 1]), diff=diff)
# if not max_diff or diff < max_diff:
# max_diff = diff
# if diff == 0:
# break
# print(max_diff)
ps = powerset(p_n)
# *min_diff
max_diff = float("inf")
i = 0
total_sum = sum(p_n)
for ss in ps:
ss = set(ss)
# css = set(x for x in p_n if x not in ss)
# diff = abs(sum(ss) - sum(css))
# p(ss=ss, css=css, diff=diff)
# max_diff = min(diff, max_diff)
sum1 = sum(ss)
sum2 = total_sum - sum1
max_diff = min(max_diff, abs(sum1 - sum2))
# if not max_diff or diff < max_diff:
# max_diff = diff
# if diff == 0:
# break
i += 1
# we have gone through half already
if i >= (2**n) / 2:
break
print(max_diff)
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 603 324 573 493 659 521 654 70... |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 10 952 775 292 702 859 719 65 943... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 3
Verdict: ACCEPTED
| input |
|---|
| 10 141 156 14 487 250 230 741 602... |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 4
Verdict: ACCEPTED
| input |
|---|
| 10 963 359 731 826 599 931 40 86 ... |
| correct output |
|---|
| 4 |
| user output |
|---|
| 4 |
Test 5
Verdict: ACCEPTED
| input |
|---|
| 10 238 224 861 461 558 860 318 93... |
| correct output |
|---|
| 2 |
| user output |
|---|
| 2 |
Test 6
Verdict: ACCEPTED
| input |
|---|
| 10 193 848 70 53 864 886 374 31 2... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 7
Verdict: ACCEPTED
| input |
|---|
| 20 13048212 423374770 19874608 81... |
| correct output |
|---|
| 8231 |
| user output |
|---|
| 8231 |
Test 8
Verdict: ACCEPTED
| input |
|---|
| 20 314836307 815098885 922742346 ... |
| correct output |
|---|
| 1188 |
| user output |
|---|
| 1188 |
Test 9
Verdict: ACCEPTED
| input |
|---|
| 20 846261131 196958704 824235264 ... |
| correct output |
|---|
| 11770 |
| user output |
|---|
| 11770 |
Test 10
Verdict: ACCEPTED
| input |
|---|
| 20 92021619 792314463 937735495 8... |
| correct output |
|---|
| 4453 |
| user output |
|---|
| 4453 |
Test 11
Verdict: ACCEPTED
| input |
|---|
| 20 452747515 202201476 845758891 ... |
| correct output |
|---|
| 4881 |
| user output |
|---|
| 4881 |
Test 12
Verdict: ACCEPTED
| input |
|---|
| 20 934033764 747013925 113297529 ... |
| correct output |
|---|
| 5482 |
| user output |
|---|
| 5482 |
Test 13
Verdict: ACCEPTED
| input |
|---|
| 1 1000000000 |
| correct output |
|---|
| 1000000000 |
| user output |
|---|
| 1000000000 |
Test 14
Verdict: ACCEPTED
| input |
|---|
| 2 1 1 |
| correct output |
|---|
| 0 |
| user output |
|---|
| 0 |
Test 15
Verdict: ACCEPTED
| input |
|---|
| 1 1 |
| correct output |
|---|
| 1 |
| user output |
|---|
| 1 |
Test 16
Verdict: ACCEPTED
| input |
|---|
| 5 934033764 2 7 4 1 |
| correct output |
|---|
| 934033750 |
| user output |
|---|
| 934033750 |
Test 17
Verdict: ACCEPTED
| input |
|---|
| 20 934033764 747013925 113297529 ... |
| correct output |
|---|
| 5483 |
| user output |
|---|
| 5483 |
Test 18
Verdict: WRONG ANSWER
| input |
|---|
| 19 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
| correct output |
|---|
| 1 |
| user output |
|---|
| 17 |
