| Task: | Split in Three |
| Sender: | ziihrs |
| Submission time: | 2021-01-31 16:03:42 +0200 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 22 |
| #2 | ACCEPTED | 78 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | 1, 2 | details |
| #2 | ACCEPTED | 0.05 s | 1, 2 | details |
| #3 | ACCEPTED | 0.06 s | 1, 2 | details |
| #4 | ACCEPTED | 0.06 s | 1, 2 | details |
| #5 | ACCEPTED | 0.04 s | 1, 2 | details |
| #6 | ACCEPTED | 0.06 s | 1, 2 | details |
| #7 | ACCEPTED | 0.06 s | 1, 2 | details |
| #8 | ACCEPTED | 0.05 s | 1, 2 | details |
| #9 | ACCEPTED | 0.06 s | 2 | details |
| #10 | ACCEPTED | 0.07 s | 2 | details |
| #11 | ACCEPTED | 0.06 s | 2 | details |
| #12 | ACCEPTED | 0.05 s | 2 | details |
| #13 | ACCEPTED | 0.32 s | 2 | details |
| #14 | ACCEPTED | 0.08 s | 2 | details |
| #15 | ACCEPTED | 0.05 s | 2 | details |
Code
N = int(input())
full = 0
for i in range(1, N+1):
full += i
if full % 3 != 0:
print('IMPOSSIBLE')
raise SystemExit
tar = full // 3
from functools import lru_cache
def f(tar, avail):
if tar == 0: yield avail
for i in range(N):
if i + 1 > tar: break
if avail & (1<<i) != 0:
yield from f(tar-(i+1), avail ^ (1<<i))
def coll(chosen):
return set(i+1 for i in range(N) if chosen & (1<<i))
A = (1<<N)-1
for avail1 in f(tar-1, A):
chosen1 = A ^ avail1
for avail2 in f(tar, avail1):
chosen2 = avail1 ^ avail2
chosen3 = avail2
res = [1] * N
for i in range(N):
if chosen2 & (1<<i) != 0:
res[i] = 2
elif chosen3 & (1<<i) != 0:
res[i] = 3
print(' '.join(map(str, res)))
raise SystemExit
print('IMPOSSIBLE')
Test details
Test 1
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 3 |
| correct output |
|---|
| 1 2 3 |
| user output |
|---|
| 1 2 3 |
Test 2
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 4 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 3
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 5 |
| correct output |
|---|
| 1 3 1 3 2 |
| user output |
|---|
| 1 3 1 3 2 |
Test 4
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 6 |
| correct output |
|---|
| 1 3 2 2 1 3 |
| user output |
|---|
| 1 3 2 2 1 3 |
Test 5
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 7 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 6
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 8 |
| correct output |
|---|
| 2 3 1 2 3 3 2 1 |
| user output |
|---|
| 1 1 1 2 1 3 3 2 |
Test 7
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 9 |
| correct output |
|---|
| 1 2 3 1 2 3 3 2 1 |
| user output |
|---|
| 1 1 1 2 2 2 3 1 3 |
Test 8
Group: 1, 2
Verdict: ACCEPTED
| input |
|---|
| 10 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 9
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 42 |
| correct output |
|---|
| 1 3 2 2 1 3 1 2 3 3 2 1 1 2 3 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
Test 10
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 95 |
| correct output |
|---|
| 1 3 1 3 2 1 2 3 3 2 1 1 2 3 3 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Truncated |
Test 11
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 96 |
| correct output |
|---|
| 1 3 2 2 1 3 1 2 3 3 2 1 1 2 3 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Truncated |
Test 12
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 97 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
Test 13
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 98 |
| correct output |
|---|
| 2 3 1 2 3 3 2 1 1 2 3 3 2 1 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Truncated |
Test 14
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 99 |
| correct output |
|---|
| 1 2 3 1 2 3 3 2 1 1 2 3 3 2 1 ... |
| user output |
|---|
| 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Truncated |
Test 15
Group: 2
Verdict: ACCEPTED
| input |
|---|
| 100 |
| correct output |
|---|
| IMPOSSIBLE |
| user output |
|---|
| IMPOSSIBLE |
