Task: | Kolmijako |
Sender: | jlaire |
Submission time: | 2025-09-05 18:28:45 +0300 |
Language: | C++ (C++11) |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 23 |
#2 | ACCEPTED | 42 |
#3 | ACCEPTED | 35 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#2 | ACCEPTED | 0.00 s | 2, 3 | details |
#3 | ACCEPTED | 0.01 s | 3 | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:65:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result] 65 | scanf("%d", &t); | ~~~~~^~~~~~~~~~ input/code.cpp:68:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result] 68 | scanf("%d", &n); | ~~~~~^~~~~~~~~~
Code
#include <assert.h> #include <stdio.h> int group[1024]; int size[3]; int big; bool go(int n, int sum, int g) { if (sum==0) return true; for (int i=sum>big?big:sum; i>0; i--) { if (i==big && group[i]) big--; if (group[i]) continue; group[i] = g; size[g]++; if (!go(n, sum-i, g)) { assert(0); return false; } return true; } if (sum > 0) { assert(0); return false; } return true; } void solve(int n) { int sum = n*(n+1)/2; if (sum%3) { goto fail; } if (n<=3) goto fail; big = n; for (int i=1; i<=n; i++) group[i]=0; for (int i=0; i<3; i++) size[i]=0; if (!go(big, sum/3, 1)) { assert(0); goto fail; } if (!go(big, sum/3, 2)) { assert(0); goto fail; } size[0] = n-size[1]-size[2]; puts("YES"); for (int g=0; g<3; g++) { printf("%d\n", size[g]); for (int i=1; i<=n; i++) { if (group[i]==g) { printf("%d%c", i, "\n "[!!--size[g]]); } } } return; fail: puts("NO"); } int main(void) { int t; scanf("%d", &t); for (int i=0; i<t; i++) { int n; scanf("%d", &n); solve(n); } }
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
15 1 2 3 4 ... |
correct output |
---|
NO NO NO NO YES ... |
user output |
---|
NO NO NO NO YES ... Truncated |
Test 2
Group: 2, 3
Verdict: ACCEPTED
input |
---|
100 1 2 3 4 ... |
correct output |
---|
NO NO NO NO YES ... |
user output |
---|
NO NO NO NO YES ... Truncated |
Test 3
Group: 3
Verdict: ACCEPTED
input |
---|
100 564 895 546 980 ... |
correct output |
---|
YES 188 1 6 12 7 18 13 24 19 30 25 36 ... |
user output |
---|
YES 325 1 2 3 4 5 6 7 8 9 10 11 12 13 ... Truncated |