Task: | Chair Game |
Sender: | Veikko Heikkinen |
Submission time: | 2024-03-06 19:57:44 +0200 |
Language: | C++ (C++20) |
Status: | READY |
Result: | 51 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 8 |
#2 | ACCEPTED | 5 |
#3 | ACCEPTED | 4 |
#4 | ACCEPTED | 7 |
#5 | ACCEPTED | 12 |
#6 | ACCEPTED | 15 |
#7 | RUNTIME ERROR | 0 |
#8 | RUNTIME ERROR | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 7, 8 | details |
#2 | ACCEPTED | 0.00 s | 1, 7, 8 | details |
#3 | ACCEPTED | 0.01 s | 1, 7, 8 | details |
#4 | ACCEPTED | 0.01 s | 1, 7, 8 | details |
#5 | ACCEPTED | 0.01 s | 1, 7, 8 | details |
#6 | RUNTIME ERROR | 0.00 s | 7, 8 | details |
#7 | RUNTIME ERROR | 0.00 s | 7, 8 | details |
#8 | ACCEPTED | 0.01 s | 2, 8 | details |
#9 | ACCEPTED | 0.01 s | 3, 4, 5, 6, 8 | details |
#10 | ACCEPTED | 0.01 s | 3, 4, 5, 6, 8 | details |
#11 | ACCEPTED | 0.01 s | 3, 4, 5, 6, 8 | details |
#12 | ACCEPTED | 0.02 s | 3, 4, 5, 6, 8 | details |
#13 | ACCEPTED | 0.01 s | 4, 5, 6, 7, 8 | details |
#14 | ACCEPTED | 0.01 s | 4, 5, 6, 8 | details |
#15 | ACCEPTED | 0.01 s | 4, 5, 6, 8 | details |
#16 | ACCEPTED | 0.01 s | 4, 5, 6, 8 | details |
#17 | ACCEPTED | 0.01 s | 5, 6, 7, 8 | details |
#18 | ACCEPTED | 0.01 s | 5, 6, 8 | details |
#19 | ACCEPTED | 0.01 s | 5, 6, 8 | details |
#20 | ACCEPTED | 0.01 s | 5, 6, 8 | details |
#21 | ACCEPTED | 0.00 s | 1, 6, 7, 8 | details |
#22 | ACCEPTED | 0.01 s | 6, 7, 8 | details |
#23 | ACCEPTED | 0.01 s | 6, 8 | details |
#24 | ACCEPTED | 0.01 s | 6, 8 | details |
#25 | RUNTIME ERROR | 0.01 s | 8 | details |
#26 | RUNTIME ERROR | 0.00 s | 8 | details |
#27 | ACCEPTED | 0.01 s | 3, 4, 5, 6, 8 | details |
#28 | RUNTIME ERROR | 0.00 s | 8 | details |
#29 | RUNTIME ERROR | 0.00 s | 8 | details |
#30 | RUNTIME ERROR | 0.00 s | 8 | details |
Code
#include <bits/stdc++.h> #define debug(x) cout << #x << ": " << x << endl #define all(x) begin(x),end(x) #define rall(x) rbegin(x),rend(x) #define fi first #define se second using namespace std; using ll = long long; using pii = pair<int, int>; void solve() { int n; cin >> n; vector<int> v(n); vector<bool> has(n+1, 0); int s = 0; bool uniq = 1; for (int i = 0; i < n; ++i) { cin >> v[i]; s += v[i]; uniq &= !has[v[i]]; has[v[i]] = 1; } if (s % n != 0) { cout << "NO\n"; return; } cout << "YES\n"; if (n <= 8) { sort(all(v)); vector<int> p(n); iota(all(p), 0); do { vector<int> q(n); for (int i = 0; i < n; ++i) q[i] = (i + v[i]) % n; sort(all(q)); if (p == q) { for (int i = 0; i < n; ++i) cout << v[i] << " \n"[i == n-1]; return; } } while (next_permutation(all(v))); } else if (uniq) { for (int i = 1; i <= n; ++i) cout << i << " \n"[i == n]; } else { int k = 5; int f[10] = {}; for (int i : v) ++f[i]; for (int i = 1; i <= k; ++i) { bool g = 1; for (int j = 1; j < k; ++j) g &= f[(i+j-1) % k + 1] == 0; if (g) { for (int j = 1; j <= n; ++j) cout << i << " \n"[j == n]; return; } } if (f[3] + 2 * f[4] + 3 * f[5] == f[1]) { for (int i = 0; i < f[2]; ++i) cout << "2 "; for (int i = 0; i < f[3]; ++i) cout << "3 1 "; for (int i = 0; i < f[4]; ++i) cout << "4 1 1 "; for (int i = 0; i < f[5]; ++i) cout << "5 1 1 1 "; cout << '\n'; return; } if (f[3] + 2 * f[2] + 3 * f[1] == f[5]) { for (int i = 0; i < f[4]; ++i) cout << "4 "; for (int i = 0; i < f[3]; ++i) cout << "5 3 "; for (int i = 0; i < f[2]; ++i) cout << "5 5 2 "; for (int i = 0; i < f[1]; ++i) cout << "5 5 5 1 "; cout << '\n'; return; } if (f[2] == 0 && f[3] == 0 && f[4] == 0) { for (int i = 0; i < f[1]; ++i) cout << "1 5 "; cout << '\n'; return; } if (f[2] + 2 * f[1] == f[4] + 2 * f[5]) { int e1 = max(0, f[1] - f[5]); int e5 = max(0, f[5] - f[1]); if ((f[1] - e1) & 1) { if (f[3] > 0) { cout << "5 3 1 "; --f[5]; --f[3]; --f[1]; } else if (f[2] > 0 && f[4] > 0) { cout << "4 5 1 2 "; --f[1]; --f[2]; --f[4]; --f[5]; } else if (e1 > 0) { cout << "4 5 1 4 1 "; f[1] -= 2; f[4] -= 2; --f[5]; } else { cout << "5 2 5 1 2 "; --f[1]; f[2] -= 2; f[5] -= 2; } } e1 = max(0, f[1] - f[5]); e5 = max(0, f[5] - f[1]); for (int i = 0; i < e1; ++i) cout << "4 4 1 "; for (int i = 0; i < e5; ++i) cout << "5 2 2 "; f[1] -= e1; f[4] -= 2 * e1; f[5] -= e5; f[2] -= 2 * e5; for (int i = 0; i < f[1]/2; ++i) cout << "5 5 1 1 "; for (int i = 0; i < f[2]; ++i) cout << "4 2 "; for (int i = 0; i < f[3]; ++i) cout << "3 "; cout << '\n'; return; } assert(false); } } int main() { cin.tie(0) -> sync_with_stdio(0); int t; cin >> t; while (t--) solve(); return 0; }
Test details
Test 1
Group: 1, 7, 8
Verdict: ACCEPTED
input |
---|
637 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 2
Group: 1, 7, 8
Verdict: ACCEPTED
input |
---|
246 7 1 1 1 1 1 1 1 7 1 1 2 1 1 7 1 ... |
correct output |
---|
YES 1 1 1 1 1 1 1 YES 1 1 1 1 2 7 1 YES ... |
user output |
---|
YES 1 1 1 1 1 1 1 YES 1 1 1 1 1 2 7 YES ... Truncated |
Test 3
Group: 1, 7, 8
Verdict: ACCEPTED
input |
---|
810 8 1 1 1 1 1 1 1 1 8 1 1 1 8 1 1 2 1 ... |
correct output |
---|
YES 1 1 1 1 1 1 1 1 YES 1 1 2 8 1 1 1 1 YES ... |
user output |
---|
YES 1 1 1 1 1 1 1 1 YES 1 1 1 1 1 1 2 8 YES ... Truncated |
Test 4
Group: 1, 7, 8
Verdict: ACCEPTED
input |
---|
1000 8 8 8 5 2 8 7 6 5 8 6 5 2 2 8 2 1 6 ... |
correct output |
---|
NO YES 8 2 2 6 2 5 1 6 NO NO ... |
user output |
---|
NO YES 1 2 2 5 6 2 8 6 NO NO ... Truncated |
Test 5
Group: 1, 7, 8
Verdict: ACCEPTED
input |
---|
1000 8 2 1 7 7 2 3 8 2 8 4 1 5 4 7 3 5 3 ... |
correct output |
---|
YES 7 2 2 7 1 3 8 2 YES 4 4 7 3 3 5 5 1 YES ... |
user output |
---|
YES 1 2 2 7 2 3 7 8 YES 1 3 3 4 4 5 5 7 YES ... Truncated |
Test 6
Group: 7, 8
Verdict: RUNTIME ERROR
input |
---|
1000 16 15 16 6 4 14 2 1 6 2 16 10 2 9... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.
Test 7
Group: 7, 8
Verdict: RUNTIME ERROR
input |
---|
1000 16 2 4 13 6 8 16 12 8 16 5 9 5 9 ... |
correct output |
---|
YES 13 5 2 8 12 2 8 5 16 16 9 6 9 ... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.
Test 8
Group: 2, 8
Verdict: ACCEPTED
input |
---|
1000 1 1 2 1 2 ... |
correct output |
---|
YES 1 NO YES 3 1 2 ... |
user output |
---|
YES 1 NO YES 1 2 3 ... Truncated |
Test 9
Group: 3, 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
988 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 10
Group: 3, 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
199 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 11
Group: 3, 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 1 1 1 2 1 1 2 2 1 1 1 1 1 2 1 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
NO NO NO NO NO ... Truncated |
Test 12
Group: 3, 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
correct output |
---|
YES 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... |
user output |
---|
YES 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ... Truncated |
Test 13
Group: 4, 5, 6, 7, 8
Verdict: ACCEPTED
input |
---|
963 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 14
Group: 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
979 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 15
Group: 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 3 3 1 2 1 1 2 3 1 3 2 1 1 3 1 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
NO NO NO NO NO ... Truncated |
Test 16
Group: 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 1 2 2 2 2 1 1 1 2 3 1 1 3 2 1 ... |
correct output |
---|
YES 2 2 2 3 1 2 3 1 2 3 1 3 1 3 1 ... |
user output |
---|
YES 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ... Truncated |
Test 17
Group: 5, 6, 7, 8
Verdict: ACCEPTED
input |
---|
980 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 18
Group: 5, 6, 8
Verdict: ACCEPTED
input |
---|
947 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 19
Group: 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 1 2 4 2 1 3 1 2 2 3 1 1 3 1 4 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
NO NO NO NO NO ... Truncated |
Test 20
Group: 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 3 4 4 4 4 4 4 3 3 3 4 4 2 3 3 ... |
correct output |
---|
YES 4 2 4 4 1 3 4 2 4 2 3 4 2 4 4 ... |
user output |
---|
YES 4 4 1 4 4 1 4 4 1 4 4 1 4 4 1 ... Truncated |
Test 21
Group: 1, 6, 7, 8
Verdict: ACCEPTED
input |
---|
715 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 22
Group: 6, 7, 8
Verdict: ACCEPTED
input |
---|
843 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 23
Group: 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 3 4 5 1 4 4 2 3 2 3 4 1 1 1 2 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
NO NO NO NO NO ... Truncated |
Test 24
Group: 6, 8
Verdict: ACCEPTED
input |
---|
1000 100 5 3 4 3 5 3 3 5 5 4 5 5 5 5 2 ... |
correct output |
---|
YES 4 4 5 5 2 4 4 5 3 5 5 2 5 5 2 ... |
user output |
---|
YES 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ... Truncated |
Test 25
Group: 8
Verdict: RUNTIME ERROR
input |
---|
1000 100 88 70 59 44 28 10 19 19 42 16 ... |
correct output |
---|
NO NO NO NO NO ... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.
Test 26
Group: 8
Verdict: RUNTIME ERROR
input |
---|
1000 100 31 72 52 30 77 56 79 10 88 11 ... |
correct output |
---|
YES 31 62 14 10 66 63 1 82 37 92 3... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.
Test 27
Group: 3, 4, 5, 6, 8
Verdict: ACCEPTED
input |
---|
1000 1 1 2 1 1 ... |
correct output |
---|
YES 1 YES 1 1 YES ... |
user output |
---|
YES 1 YES 1 1 YES ... Truncated |
Test 28
Group: 8
Verdict: RUNTIME ERROR
input |
---|
1000 1 1 2 2 2 ... |
correct output |
---|
YES 1 YES 2 2 YES ... |
user output |
---|
(empty) |
Error:
*** stack smashing detected ***: terminated
Test 29
Group: 8
Verdict: RUNTIME ERROR
input |
---|
1000 100 87 81 29 35 8 98 77 50 46 34 5... |
correct output |
---|
YES 34 74 25 91 80 18 95 26 88 12 ... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.
Test 30
Group: 8
Verdict: RUNTIME ERROR
input |
---|
1000 100 65 92 39 22 67 41 17 65 97 71 ... |
correct output |
---|
YES 9 38 24 59 69 24 63 3 22 35 24... |
user output |
---|
(empty) |
Error:
code: input/code.cpp:124: void solve(): Assertion `false' failed.