Submission details
Task:Kolmijako
Sender:MojoLake
Submission time:2025-09-07 19:06:53 +0300
Language:C++ (C++20)
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>

#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()

using namespace std;
using ll = long long;

const int inf = 1e9;
const ll LLinf = 1e18;

tuple<vector<int>, vector<int>> ite(vector<int> v, int tar) {
    vector<int> w;
    vector<int> ret;
    int cur_sum = 0;
    for (int x : v) {
        if (cur_sum + x <= tar) {
            cur_sum += x;
            ret.push_back(x);
        } else {
            w.push_back(x);
        }
    }
    assert(cur_sum == tar);
    return {w, ret};
}

tuple<vector<int>, vector<int>, vector<int>> calc(int n) {
    vector<int> v(n);
    iota(all(v), 1);
    reverse(all(v));
    int s = (n * (n + 1)) / 2;
    int tar = s / 3;

    auto [new_v, a] = ite(v, tar);
    v = new_v;
    auto [neww_v, b] = ite(v, tar);
    v = neww_v;
    auto [_, c] = ite(v, tar);
    
    return {a, b, c};
}

void solve() {

    int i; cin >> i;
    if (i % 3 == 1 || i <= 3) {
        cout << "NO\n";
        return;
    }
    auto [a, b, c] = calc(i);

    cout << "YES\n";
    cout << sz(a) << "\n";
    for (int x : a) cout << x << " ";
    cout << "\n";

    cout << sz(b) << "\n";
    for (int x : b) cout << x << " ";
    cout << "\n";

    cout << sz(c) << "\n";
    for (int x : c) cout << x << " ";
    cout << "\n";
}

int main() {
    // cin.tie(0)->sync_with_stdio(0);
    int tt = 1;
    cin >> tt;
    while (tt--) {
        solve();
    }
}

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