Submission details
Task:Kolmijako
Sender:Lieska
Submission time:2025-09-05 19:17:21 +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;

typedef long long ll;

int used[1001];

void f(vector<int> &v, int &cnt, int goal, int a){
    int sum=0;
    for (int i=a; i>=1; --i){
        if (used[i]==0 && sum+i <= goal){
            cnt++;
            used[i] = true;
            v.push_back(i);
            sum = sum+i;
        }
        if (sum==goal) return;
    }
}

void g(vector<int> v, int cnt){
    cout << cnt << "\n";
    for (auto u: v){
        cout << u << " ";
    }
    cout << "\n";

}

int main(){
    
    int t;
    cin >> t;
    for (int i=1; i<=t; ++i){
        int a;
        cin >> a;
        if (a < 5 || a%3 == 1){
            cout << "NO\n";
            continue;
        }
        
        cout << "YES\n";
        int cnt1=0, cnt2=0, cnt3=0;
        vector<int> v1, v2, v3;
        for (int  i=1; i<=a; ++i) used[i] = 0;
        int goal = a*(a+1)/6;
        f(v1, cnt1, goal, a);
        f(v2, cnt2, goal, a);
        f(v3, cnt3, goal, a);
        g(v1, cnt1);
        g(v2, cnt2);
        g(v3, cnt3);
        

    }
}

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