제출 #478501

#제출 시각아이디문제언어결과실행 시간메모리
478501JovanBUnscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
3 ms460 KiB
#include <bits/stdc++.h> #include "messy.h" using namespace std; const int N = 200; int soln[N+5]; void do_add(int n, int l, int r){ string qr = ""; for(int i=0; i<n; i++) qr += '1'; for(int i=l; i<=r; i++) qr[i] = '0'; int mid = (l+r)/2; for(int i=l; i<=mid; i++){ qr[i] = '1'; add_element(qr); qr[i] = '0'; } if(mid != l){ do_add(n, l, mid); do_add(n, mid+1, r); } } void do_find(int n, int l, int r, vector <int> where){ if(l == r){ soln[where[0]] = l; return; } string qr = ""; for(int i=0; i<n; i++) qr += '1'; for(auto c : where) qr[c] = '0'; int mid = (l+r)/2; vector <int> v1, v2; for(auto c : where){ qr[c] = '1'; if(check_element(qr)) v1.push_back(c); else v2.push_back(c); qr[c] = '0'; } do_find(n, l, mid, v1); do_find(n, mid+1, r, v2); } std::vector<int> restore_permutation(int n, int w, int r) { do_add(n, 0, n - 1); compile_set(); vector <int> svi; for(int i=0; i<n; i++) svi.push_back(i); do_find(n, 0, n - 1, svi); vector <int> sln; for(int i=0; i<n; i++) sln.push_back(soln[i]); return sln; }
#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...