Submission #705281

#TimeUsernameProblemLanguageResultExecution timeMemory
705281lukameladzeUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
2 ms468 KiB
#include "messy.h" #include <bits/stdc++.h> using namespace std; #define f first #define s second #define pii pair <int, int> #define pb push_back vector <int> pp; int nn,rr,ww; void solve(int le, int ri) { if (le == ri) return ; string s = ""; for (int i = 0; i < nn; i++) { s += "0"; } for (int i = 0; i < le; i++) { s[i] = '1'; } for (int i = ri + 1; i < nn; i++) { s[i] = '1'; } int mid = (le + ri) / 2; for (int i = le; i <= mid; i++) { s[i] = '1'; add_element(s); s[i] = '0'; } solve(le,mid); solve(mid + 1, ri); } void solve1(int le, int ri, vector <int> v) { if (le == ri) { pp[v[0]] = le; return ; } int mid = (le + ri) / 2; string s; for (int i = 0; i < nn; i++) { s += "1"; } for (int i = 0; i < (int)v.size(); i++) { s[v[i]] = '0'; } vector <int> lef,rig; for (int i = 0; i < (int)v.size(); i++) { s[v[i]] = '1'; if (check_element(s)) lef.pb(v[i]); else rig.pb(v[i]); s[v[i]] = '0'; } solve1(le,mid,lef); solve1(mid + 1, ri, rig); } std::vector<int> restore_permutation(int n, int w, int r) { nn = n; ww = w; rr = r; pp = vector <int>(nn, 0); solve(0,nn - 1); compile_set(); vector <int> v; for (int i = 0; i < nn; i++) { v.pb(i); } solve1(0, nn - 1,v); return pp; }
#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...