CSES - Datatähti Open 2021 - Results
Submission details
Task:Split in Three
Sender:knightron0
Submission time:2021-01-30 17:22:38 +0200
Language:C++17
Status:READY
Result:22
Feedback
groupverdictscore
#1ACCEPTED22
#20
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
#90.01 s2details
#100.01 s2details
#110.01 s2details
#12ACCEPTED0.01 s2details
#130.01 s2details
#140.01 s2details
#15ACCEPTED0.01 s2details

Code

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

#define pb push_back
#define fr first
#define sc second
#define clr(a, x) memset(a, x, sizeof(a))
#define dbg(x) cout<<"("<<#x<<"): "<<x<<endl;
#define printvector(arr) for (auto it = arr.begin(); it != arr.end(); ++it) cout<<*it<<" "; cout<<endl;
#define all(v) v.begin(), v.end()
#define lcm(a, b) (a * b)/__gcd(a, b)
#define int long long int
#define printvecpairs(vec) for(auto it: vec) cout<<it.fr<<' '<<it.sc<<endl;
#define endl '\n'
#define float long double

const int MOD = 1e9 + 7;
const int INF = 2e15;
const int MAXN = 1e5 + 5;

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    #ifdef LOCAL
    freopen("input.txt", "r", stdin);
    #endif
    int n;
    cin>>n;
    int sum = (n* (n+1))/2;
    sum -= 3;
    if(sum % 3 != 0){
    	cout<<"IMPOSSIBLE"<<endl;
    } else {
    	int ans[n+1];
    	clr(ans, 0);
    	int a= sum/3;
    	int b = a+ 1;
    	bool done = 0;
    	if(a <= n && ans[a] == 0){
    		ans[a] = 1;
    	} else {
	    	for(int i= 1;i<=n;i++){
	    		if(ans[i] != 0) continue;
	    		for(int j= i+1;j<=n;j++){
	    			if(ans[j] != 0) continue;
	    			if(i+j == a){
	    				ans[i] = 1;
	    				ans[j] = 1;
	    				done = 1;
	    				break;
	    			}
	    		}
	    		if(done) break;
	    	}
	    }
    	done = 0;
    	if(b <= n && ans[b] == 0){
    		ans[b] = 2;
    	} else {
	    	for(int i= 1;i<=n;i++){
	    		if(ans[i] != 0) continue;
	    		for(int j= i+1;j<=n;j++){
	    			if(ans[j] != 0) continue;
	    			if(i+j == b){
	    				ans[i] = 2;
	    				ans[j] = 2;
	    				done = 1;
	    				break;
	    			}
	    		}
	    		if(done) break;
	    	}
	    }
    	int sums[4] = {0};
    	for(int i= 1;i<=n;i++){
    		if(ans[i] == 0) ans[i] = 3;
    		sums[ans[i]]+=i;
    	}
    	if(sums[1] == sums[2]-1 && sums[2] == sums[3]-1){
			for(int i= 1;i<=n;i++){
	    		cout<<ans[i]<<' ';
	    	}
	    	cout<<endl;
    	} else {
    		cout<<"IMPOSSIBLE"<<endl;
    	}
    }
    return 0;
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
3

correct output
1 2 3 

user output
1 2 3 

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 3 3 1 2 

Test 4

Group: 1, 2

Verdict: ACCEPTED

input
6

correct output
1 3 2 2 1 3 

user output
3 2 3 3 2 1 

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 3 1 3 2 3 2 1 

Test 7

Group: 1, 2

Verdict: ACCEPTED

input
9

correct output
1 2 3 1 2 3 3 2 1 

user output
3 3 3 3 1 3 2 2 1 

Test 8

Group: 1, 2

Verdict: ACCEPTED

input
10

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 9

Group: 2

Verdict:

input
42

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

user output
IMPOSSIBLE

Test 10

Group: 2

Verdict:

input
95

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

user output
IMPOSSIBLE

Test 11

Group: 2

Verdict:

input
96

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

user output
IMPOSSIBLE

Test 12

Group: 2

Verdict: ACCEPTED

input
97

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 13

Group: 2

Verdict:

input
98

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

user output
IMPOSSIBLE

Test 14

Group: 2

Verdict:

input
99

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

user output
IMPOSSIBLE

Test 15

Group: 2

Verdict: ACCEPTED

input
100

correct output
IMPOSSIBLE

user output
IMPOSSIBLE