CSES - Datatähti Open 2021 - Results
Submission details
Task:Split in Three
Sender:nigus
Submission time:2021-01-30 14:54:46 +0200
Language:C++ (C++17)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED22
#2ACCEPTED78
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2details
#2ACCEPTED0.01 s1, 2details
#3ACCEPTED0.01 s1, 2details
#4ACCEPTED0.01 s1, 2details
#5ACCEPTED0.01 s1, 2details
#6ACCEPTED0.01 s1, 2details
#7ACCEPTED0.01 s1, 2details
#8ACCEPTED0.01 s1, 2details
#9ACCEPTED0.01 s2details
#10ACCEPTED0.01 s2details
#11ACCEPTED0.01 s2details
#12ACCEPTED0.01 s2details
#13ACCEPTED0.01 s2details
#14ACCEPTED0.01 s2details
#15ACCEPTED0.01 s2details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:64:8: warning: unused variable 'a' [-Wunused-variable]
     ll a,b,c,d;
        ^
input/code.cpp:64:10: warning: unused variable 'b' [-Wunused-variable]
     ll a,b,c,d;
          ^
input/code.cpp:64:12: warning: unused variable 'c' [-Wunused-variable]
     ll a,b,c,d;
            ^
input/code.cpp:64:14: warning: unused variable 'd' [-Wunused-variable]
     ll a,b,c,d;
              ^

Code

#pragma GCC optimize("O3")   //
#include <bits/stdc++.h>
using namespace std;

#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define per(i, b, a) for(int i = b - 1; i >= a; i--)
#define trav(a, x) for(auto& a : x)
#define all(x) x.begin(), x.end()
#define sz(x) (int)(x).size()
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef long double ld;
typedef unsigned long long ull;

unsigned seed = chrono::system_clock::now().time_since_epoch().count();
mt19937 eng(seed);

ll random2(){
    return (1ll << 31ll)*eng()+eng();
}

ll n,m,k,q,T;

const ll big = 1000000007;
const ll big2 = 1000000009;
const ll mod =  998244353;

const int MAXN = 400002;

ll F[3] = {0};

int ANS[101] = {0};

void give(int x, int rem){
    F[rem] += x;
    ANS[x] = rem;
}

vi P;

void solve(int start, int stop){
    for(int c1 = start; c1 <= stop; c1++){
        int b = ((c1-start)/3)%3;
        int rem = ((c1-1)-b+3)%3;
        give(c1, P[rem]);
    }
}


bool comp(ll i, ll j){
    return F[i] < F[j];
}

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

    //freopen("fhc.txt","r",stdin);
    //freopen("autput.txt","w",stdout);

    ll a,b,c,d;

    P = {0,1,2};
    vi P2 = {0,1,2};
    cin >> n;
    if(n%3 == 1){
        cout << "IMPOSSIBLE\n";
        return 0;
    }
    if(n%3 == 0){
        solve(1, n);

        if(n%9 == 0){
            rep(c1,1,n){
                if(ANS[c1] == 2 && ANS[c1+1] == 0){
                    give(c1,0);
                    give(c1+1,2);
                    F[2] -= c1;
                    F[0] -= c1+1;
                    break;
                }
            }
        }

        sort(all(P), comp);

        rep(c1,0,3){
            P2[P[c1]] = c1;
        }

        cerr << F[0] << " " << F[1] << " " << F[2] << "   gfd\n";
        rep(c1,1,n+1){
            cout << P2[ANS[c1]]+1 << " ";
        }cout << "\n";
    }
    if(n%3 == 2){
        solve(3, n);

        sort(all(P), comp);
        give(2,P[0]);
        give(1,P[2]);
        sort(all(P), comp);

        rep(c1,0,3){
            P2[P[c1]] = c1;
        }

        cerr << F[0] << " " << F[1] << " " << F[2] << "   gfd\n";
        rep(c1,1,n+1){
            cout << P2[ANS[c1]]+1 << " ";
        }cout << "\n";
    }

    return 0;
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
3

correct output
1 2 3 

user output
1 2 3 

Error:
1 2 3   gfd

Test 2

Group: 1, 2

Verdict: ACCEPTED

input
4

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 3

Group: 1, 2

Verdict: ACCEPTED

input
5

correct output
1 3 1 3 2 

user output
3 2 2 1 3 

Error:
4 6 5   gfd

Test 4

Group: 1, 2

Verdict: ACCEPTED

input
6

correct output
1 3 2 2 1 3 

user output
1 3 2 2 1 3 

Error:
6 8 7   gfd

Test 5

Group: 1, 2

Verdict: ACCEPTED

input
7

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 6

Group: 1, 2

Verdict: ACCEPTED

input
8

correct output
2 3 1 2 3 3 2 1 

user output
3 2 2 3 1 1 2 3 

Error:
13 11 12   gfd

Test 7

Group: 1, 2

Verdict: ACCEPTED

input
9

correct output
1 2 3 1 2 3 3 2 1 

user output
1 2 3 1 3 2 2 3 1 

Error:
14 15 16   gfd

Test 8

Group: 1, 2

Verdict: ACCEPTED

input
10

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 9

Group: 2

Verdict: ACCEPTED

input
42

correct output
1 3 2 2 1 3 1 2 3 3 2 1 1 2 3 ...

user output
1 3 2 2 1 3 3 2 1 1 3 2 2 1 3 ...

Error:
300 302 301   gfd

Test 10

Group: 2

Verdict: ACCEPTED

input
95

correct output
1 3 1 3 2 1 2 3 3 2 1 1 2 3 3 ...

user output
3 2 2 1 3 3 2 1 1 3 2 2 1 3 3 ...
Truncated

Error:
1519 1521 1520   gfd

Test 11

Group: 2

Verdict: ACCEPTED

input
96

correct output
1 3 2 2 1 3 1 2 3 3 2 1 1 2 3 ...

user output
1 3 2 2 1 3 3 2 1 1 3 2 2 1 3 ...
Truncated

Error:
1551 1553 1552   gfd

Test 12

Group: 2

Verdict: ACCEPTED

input
97

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 13

Group: 2

Verdict: ACCEPTED

input
98

correct output
2 3 1 2 3 3 2 1 1 2 3 3 2 1 1 ...

user output
3 2 2 3 1 1 2 3 3 1 2 2 3 1 1 ...
Truncated

Error:
1618 1616 1617   gfd

Test 14

Group: 2

Verdict: ACCEPTED

input
99

correct output
1 2 3 1 2 3 3 2 1 1 2 3 3 2 1 ...

user output
1 2 3 1 3 2 2 3 1 1 2 3 3 1 2 ...
Truncated

Error:
1649 1650 1651   gfd

Test 15

Group: 2

Verdict: ACCEPTED

input
100

correct output
IMPOSSIBLE

user output
IMPOSSIBLE