Submission #1285514

#TimeUsernameProblemLanguageResultExecution timeMemory
1285514Faisal_SaqibUnscrambling a Messy Bug (IOI16_messy)C++17
100 / 100
2 ms588 KiB
#include <bits/stdc++.h> using namespace std; void add_element(std::string x); bool check_element(std::string x); void compile_set(); string s; void Write(int l,int r) { if(l==r)return; int m=(l+r)/2; for(int i=l;i<=m;i++) { s[i]='1'; add_element(s); s[i]='0'; } for(int i=m+1;i<=r;i++)s[i]='1'; Write(l,m); for(int i=m+1;i<=r;i++)s[i]='0'; for(int i=l;i<=m;i++)s[i]='1'; Write(m+1,r); for(int i=l;i<=m;i++)s[i]='0'; } vector<int> p; void Read(int l,int r,vector<int> ind) { if(l==r) { p[ind[0]]=l; return; } // bits [l,r] in original string correspond to bits ind in the shuffled one int m=(l+r)/2; vector<int> lt,rt; for(int i:ind) { s[i]='1'; if(check_element(s)) { lt.push_back(i); } else { rt.push_back(i); } s[i]='0'; } for(auto i:rt)s[i]='1'; Read(l,m,lt); for(auto i:rt)s[i]='0'; for(auto i:lt)s[i]='1'; Read(m+1,r,rt); for(auto i:lt)s[i]='0'; } std::vector<int> restore_permutation(int n, int w, int r) { s.clear(); p.clear(); vector<int> q; for(int i=0;i<n;i++)s+='0',q.push_back(i),p.push_back(0); Write(0,n-1); for(int i=0;i<n;i++)s[i]='0'; compile_set(); Read(0,n-1,q); return p; }

Compilation message (stderr)

messy.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
messy_c.h:1:9: warning: #pragma once in main file
    1 | #pragma once
      |         ^~~~
#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...