Task: | Kolmijako |
Sender: | Grez |
Submission time: | 2025-09-05 22:26:20 +0300 |
Language: | C++ (C++17) |
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.01 s | 2, 3 | details |
#3 | ACCEPTED | 0.01 s | 3 | details |
Code
#include <iostream> #include <list> using namespace std; int main() { int count; int le; cin >> count; while (count-- > 0) { cin >> le; if (le<5 || le%3 == 1) { cout << "NO" << endl; continue; } cout << "YES" << endl; int target = le * (le + 1) / 6; bool used[le] = { 0 }; for (int g=0; g<3; g++) { list<int> nums = {}; int needed = target; for (int i=le; i> 0; i--) { if (i > needed) { i = needed; } if (!used[i-1]) { used[i-1] = 1; nums.push_back(i); needed -= i; } if (needed == 0) { break; } } cout << nums.size() << endl; cout << nums.back(); nums.pop_back(); for (int n : nums) { cout << " " << n; } cout << endl; } } return 0; }
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 104 271 564 563 562 561 560 559 55... Truncated |