Submission #563456

#TimeUsernameProblemLanguageResultExecution timeMemory
563456elazarkorenUnscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
2 ms496 KiB
#include <bits/stdc++.h> #include "messy.h" #define x first #define y second #define all(v) v.begin(), v.end() #define chkmin(a, b) a = min(a, b) #define chkmax(a, b) a = max(a, b) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<vi> vvi; typedef pair<int, int> pii; typedef vector<pii> vii; const int MAX_N = 150; int n; void Create(int l, int r) { if (l + 1 == r) return; string s(n, '1'); fill(s.begin() + l, s.begin() + r, '0'); for (int i = l; i < (l + r) >> 1; i++) { s[i] = '1'; add_element(s); s[i] = '0'; } Create(l, (l + r) >> 1), Create((l + r) >> 1, r); } vi ans; void Solve(int l, int r, vi &image) { if (l + 1 == r) { ans[image[0]] = l; return; } string s(n, '1'); for (int i : image) s[i] = '0'; vi left, right; for (int i = 0; i < n; i++) { if (s[i] == '0') { s[i] = '1'; if (check_element(s)) left.push_back(i); else right.push_back(i); s[i] = '0'; } } Solve(l, (l + r) >> 1, left), Solve((l + r) >> 1, r, right); } vi restore_permutation(int N, int w, int r) { n = N; Create(0, n); compile_set(); ans.resize(n); vi image(n); iota(all(image), 0); Solve(0, n, image); return ans; }
#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...