Submission details
Task:Kolmijako
Sender:Grez
Submission time:2025-09-05 22:26:20 +0300
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED23
#2ACCEPTED42
#3ACCEPTED35
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.01 s2, 3details
#3ACCEPTED0.01 s3details

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