Submission #251466

#TimeUsernameProblemLanguageResultExecution timeMemory
251466BruteforcemanTrobojnica (COCI19_trobojnica)C++11
110 / 110
197 ms16248 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 2e5 + 10; #define endl '\n' int suc[maxn]; int pre[maxn]; int succol[maxn], precol[maxn]; char a[maxn]; int main() { int n; scanf("%d", &n); scanf("%s", a); int freq[] = {0, 0, 0, 0}; set <int> s[4][4]; for(int i = 0; i < n; i++) { pre[i] = (n + i - 1) % n; suc[i] = (i + 1) % n; freq[a[i] - '0'] += 1; precol[i] = a[pre[i]] - '0'; succol[i] = a[i] - '0'; s[precol[i]][succol[i]].insert(i); } if(freq[1] == n || freq[2] == n || freq[3] == n) { puts("NE"); exit(0); } if(abs(freq[1] - freq[2]) % 2 == 1 || abs(freq[2] - freq[3]) % 2 == 1) { puts("NE"); exit(0); } puts("DA"); int cur = 0; for(int i = 0; i < n - 3; i++) { int occur = max({freq[1], freq[2], freq[3]}); int col; for(col = 1; col <= 3; col++) { if(freq[col] == occur) break; } bool done = false; for(int x = 1; x <= 3; x++) { for(int y = 1; y <= 3; y++) { if(s[x][y].empty()) continue; if(x == y || (x != col && y != col)) continue; if(done) continue; int cur = *s[x][y].begin(); s[x][y].erase(cur); int p = pre[cur]; int q = suc[cur]; int inv = 6 - x - y; freq[x] -= 1; freq[y] -= 1; freq[inv] += 1; printf("%d %d %d\n", p + 1, q + 1, inv); s[precol[p]][succol[p]].erase(p); s[precol[q]][succol[q]].erase(q); pre[suc[cur]] = pre[cur]; precol[suc[cur]] = inv; suc[pre[cur]] = suc[cur]; succol[pre[cur]] = inv; s[precol[p]][succol[p]].insert(p); s[precol[q]][succol[q]].insert(q); done = true; } } } return 0; }

Compilation message (stderr)

trobojnica.cpp: In function 'int main()':
trobojnica.cpp:32:7: warning: unused variable 'cur' [-Wunused-variable]
   int cur = 0;
       ^~~
trobojnica.cpp:11:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &n);
   ~~~~~^~~~~~~~~~
trobojnica.cpp:12:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%s", a);
   ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...