Submission #800701

#TimeUsernameProblemLanguageResultExecution timeMemory
800701kirakaminski968Unscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
2 ms468 KiB
#include "messy.h" #include <bits/stdc++.h> using namespace std; int n, occ[128]; void solve(int l, int r){ if(l == r) return; string s; for(int i = 0;i<n;++i) s.push_back('0'); for(int i = l;i<=r;++i) s[i] = '1'; int mid = (l+r)/2; for(int j = mid+1;j<=r;++j){ s[j] = '0'; add_element(s); s[j] = '1'; } solve(l,mid); solve(mid+1,r); } void solve2(int l, int r, vector<int> v){ if(l == r){ occ[v[0]] = l; return; } int mid = (l+r)/2; string s; for(int i = 0;i<n;++i) s.push_back('0'); for(auto x : v) s[x] = '1'; vector<int> low, high; for(auto x : v){ s[x] = '0'; if(check_element(s)) high.push_back(x); else low.push_back(x); s[x] = '1'; } solve2(l,mid,low); solve2(mid+1,r,high); } vector<int> restore_permutation(int N, int w, int r) { n = N; solve(0,N-1); compile_set(); vector<int> vec; for(int i = 0;i<n;++i) vec.push_back(i); solve2(0,n-1,vec); vector<int> ans; for(int i=0; i<n; i++) ans.push_back(occ[i]); 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...