Submission #301460

#TimeUsernameProblemLanguageResultExecution timeMemory
301460matheo_apdUnscrambling a Messy Bug (IOI16_messy)C++14
0 / 100
1 ms256 KiB
#include <bits/stdc++.h> #include "messy.h" using namespace std; std::mt19937 rng((int) std::chrono::steady_clock::now().time_since_epoch().count()); int n_; vector<int> ans; void add(int l, int r){ if(l == r) return; string c; for(int i = 0; i < n_; i++){ if(l <= i and i <= r) c += "1"; else c += "0"; } int mid = (l+r)/2; for(int i = l; i <= mid; i++){ c[i] = '0'; add_element(c); c[i] = 1; } add(l, mid); add(mid+1, r); } void solve(int l, int r, vector<int> caras){ if(l == r){ ans[caras[0]] = l; return; } vector<int> L, R; string c; for(int i = 0; i < n_; i++){ if(binary_search(caras.begin(), caras.end(), i)) c += "1"; else c += "0"; } for(int i = 0; i < n_; i++){ if(c[i] == '0') continue; c[i] = '0'; if(check_element(c)) L.push_back(i); else R.push_back(i); c[i] = '1'; } int mid = (l+r)/2; solve(l, mid, L); solve(mid+1, r, R); } vector<int> restore_permutation(int n, int w, int r){ ans.resize(n); add(0, n-1); n_ = n; compile_set(); vector<int> caras; for(int i = 0; i < n; i++) caras.push_back(i); solve(0, n-1, caras); 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...