Submission #301457

#TimeUsernameProblemLanguageResultExecution timeMemory
301457matheo_apdUnscrambling a Messy Bug (IOI16_messy)C++14
0 / 100
1 ms256 KiB
#include <bits/stdc++.h> #include "messy.h" using namespace std; #define maxn 130 int ans[maxn], n_; 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){ add(0, n-1); n_ = n; compile_set(); vector<int> resposta; vector<int> caras; for(int i = 0; i < n; i++) caras.push_back(i); solve(0, n-1, caras); for(int i = 0; i < n; i++) resposta.push_back(ans[i]); return resposta; }
#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...