| 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 |
