Submission details
Task:Kolmijako
Sender:mangolassi
Submission time:2025-09-07 12:09:16 +0300
Language:C++ (C++11)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED23
#2ACCEPTED42
#3ACCEPTED35
Test results
testverdicttimegroup
#1ACCEPTED0.00 s1, 2, 3details
#2ACCEPTED0.00 s2, 3details
#3ACCEPTED0.01 s3details

Code

#include <bits/stdc++.h>
using namespace std;
using ll = long long;

vector<vector<int>> build(int n) {
	if (n <= 4 || (n % 3 == 1)) return {};
	if (n <= 9) {
		if (n == 5) return {{4, 1}, {3, 2}, {5}};		// target 5
		if (n == 6) return {{5, 2}, {4, 3}, {6, 1}};		// target 7
		if (n == 8) return {{8, 4}, {7, 5}, {6, 3, 2, 1}};	// target 12
		if (n == 9) return {{9, 6}, {8, 7}, {5, 4, 3, 2, 1}};	// target 15
		assert(false);
	} else {
		auto sub = build(n - 6);
		for (int i = 0; i < 3; ++i) {
			sub[i].push_back(n - i);
			sub[i].push_back(n - 5 + i);
		}
		return sub;
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	int q;
	cin >> q;
	for (int qi = 0; qi < q; ++qi) {
		int n;
		cin >> n;

		auto res = build(n);
		if (res.empty()) cout << "NO\n";
		else {
			cout << "YES\n";
			for (int i = 0; i < 3; ++i) {
				sort(res[i].begin(), res[i].end());
				cout << res[i].size();
				for (auto v : res[i]) cout << ' ' << v;
				cout << '\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
188 2 5 7 12 13 18 19 24 25 30...
Truncated