Submission details
Task:Kolmijako
Sender:ArktinenKarpalo
Submission time:2025-09-05 22:29:48 +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 <bits/stdc++.h>

typedef long long ll;

using namespace std;

vector<vector<int>> solve2(int n, int target) {
  vector<int> sum(3);
  vector<vector<int>> mem(3);
  vector<bool> taken(n + 1);
  for (int j = 0; j < 3; j++) {
    for (int i = n; i >= 1; i--) {
      if (taken[i])
        continue;
      if (sum[j] + i <= target) {
        mem[j].push_back(i);
        sum[j] += i;
        taken[i] = true;
      }
    }
  }
  return mem;
}

void solve(int n) {
  ll sum = n * (n + 1) / 2;
  if (sum % 3 != 0 || n < 4) {
    cout << "NO\n";
  } else {
    // cout << n << " " << (sum%3==0) << " sum: " << sum  << " /3=" << sum/3<< "
    // " <<solve2(n, sum/3) << endl;
    auto ans = solve2(n, sum / 3);
    cout << "YES\n";
    for (auto u : ans) {
      cout << u.size() << "\n";
      for (auto u2 : u)
        cout << u2 << " ";
      cout << "\n";
    }
  }
}

int main() {
	int t;
	cin >> t;
	while(t--) {
		int n;
		cin >> 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
104
564 563 562 561 560 559 558 55...
Truncated