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++ (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