제출 #289225

#제출 시각아이디문제언어결과실행 시간메모리
289225IgorIUnscrambling a Messy Bug (IOI16_messy)C++17
70 / 100
3 ms544 KiB
#include <vector> #include <cstdio> #include <string> #include <set> #include <cstdlib> #include <iostream> #include "messy.h" using namespace std; #define all(x) (x).begin(), (x).end() #define forn(i, n) for (int (i) = 0; (i) < (n); (i)++) vector<int> restore_permutation(int n, int w, int r) { int lg = 0, s = 1; while (s < n) s *= 2, lg++; vector<int> p(n); for (int i = 1; i <= lg; i++) { string s(n, '0'); for (int j = 0; j < i; j++) s[j] = '1'; add_element(s); } for (int pos = lg; pos < n; pos++) { for (int j = 0; j < lg; j++) { if (pos & (1 << j)) { string s(n, '1'); s[j] = '0'; s[pos] = '0'; add_element(s); } } } compile_set(); vector<int> f(n); for (int i = 0; i < lg; i++) { string s(n, '0'); for (int j = 0; j < i; j++) { s[p[j]] = '1'; } for (int pos = 0; pos < n; pos++) { if (s[pos] == '0') { s[pos] = '1'; int x = check_element(s); if (x) { p[i] = pos; f[pos] = 1; break; } s[pos] = '0'; } } } vector<int> q(n); for (int i = 0; i < lg; i++) q[p[i]] = i; for (int i = 0; i < n; i++) { if (f[i] == 0) { int f = 0; for (int j = 0; j < lg; j++) { string s(n, '1'); s[i] = '0'; s[p[j]] = '0'; int z = check_element(s); if (z) f += (1 << j); } q[i] = f; } } return q; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...