Submission #556237

#TimeUsernameProblemLanguageResultExecution timeMemory
556237uroskUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
2 ms468 KiB
#include "messy.h" #define here cerr<<"===========================================\n" #include <bits/stdc++.h> #define ld double #define ll long long #define ull unsigned long long #define llinf 100000000000000000LL // 10^17 #define iinf 2000000000 // 2*10^9 #define pb push_back #define popb pop_back #define fi first #define sc second #define endl '\n' #define pii pair<int,int> #define pll pair<ll,ll> #define pld pair<ld,ld> #define sz(a) int(a.size()) #define all(a) a.begin(),a.end() #define ceri(a,l,r) {for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;} using namespace std; #define maxn 205 int n; vector<int> p; vector<int> ans; void add(int l,int r){ if(l==r) return; //cerr<<l<< " "<<r<<endl; string s(n,'0'); int mid = (l+r)/2; for(int i = 0;i<l;i++) s[i] = '1'; for(int i = r+1;i<n;i++) s[i] = '1'; for(int i = l;i<=mid;i++){ s[i] = '1'; add_element(s); //cerr<<s<<endl; s[i] = '0'; } add(l,mid); add(mid+1,r); } void reshi(int l,int r){ if(r==l) return; string s(n,'0'); int mid = (l+r)/2; for(int i = 0;i<l;i++) s[p[i]] = '1'; for(int i = r+1;i<n;i++) s[p[i]] = '1'; vector<int> ls,rs; //here; for(int i = l;i<=r;i++){ s[p[i]] = '1'; bool ima = check_element(s); //cerr<<s<< " "<<ima<<endl; if(ima) ls.pb(p[i]); else rs.pb(p[i]); s[p[i]] = '0'; } for(int i = l;i<=mid;i++) p[i] = ls[i-l]; for(int i = mid+1;i<=r;i++) p[i] = rs[i-mid-1]; /* cerr<<l<< " "<<r<<endl; for(ll x : ls) cerr<<x<< " "; cerr<<endl; for(ll x : rs) cerr<<x<< " "; cerr<<endl; */ reshi(l,mid); reshi(mid+1,r); } vector<int> restore_permutation(int N, int w, int r) { n = N; p.resize(n); iota(all(p),0); add(0,n-1); compile_set(); reshi(0,n-1); ans.resize(n); for(ll i = 0;i<n;i++) ans[p[i]] = i; return ans; } /* 4 16 16 2 1 3 0 */
#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...