Submission #247440

#TimeUsernameProblemLanguageResultExecution timeMemory
247440kshitij_sodaniUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
11 ms640 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second //#define endl '\n' mt19937 rng; void add_element(string x); bool check_element(string x); void compile_set(); //#include "messy.h" vector<int> ans; int nn; void divide(set<int> cur,int ind,int stop,int num){ if(ind==stop){ ans[*(cur.begin())]=num;//*(cur.begin()); return; } set<int> cur2; set<int> cur3; for(auto j:cur){ string s=""; for(int k=0;k<nn;k++){ if(k==j){ s+="1"; } else if(cur.find(k)==cur.end()){ s+="1"; } else{ s+="0"; } } // cout<<s<<":"<<endl; if(check_element(s)){ cur2.insert(j); } else{ cur3.insert(j); } } divide(cur2,ind+1,stop,num+(1<<ind)); divide(cur3,ind+1,stop,num); } std::vector<int> restore_permutation(int n, int w, int r) { nn=n; int x=3; for(int i=0;i<n;i++){ ans.pb(0); } if(n==32){ x=5; } if(n==128){ x=7; } if(n==4){ x=2; } int val[n]; for(int i=0;i<n;i++){ val[i]=0; } for(int i=0;i<x;i++){ for(int j=0;j<n;j++){ if((j&(1<<i))){ int xx=(1<<i)-1; string s=""; for(int k=0;k<n;k++){ if(k==j){ s+="1"; } else if(val[k]!=val[j]){ s+="1"; } else{ s+="0"; } } add_element(s); // cout<<s<<endl; } } for(int j=0;j<n;j++){ val[j]+=(j&(1<<i)); } } compile_set(); set<int> cur; for(int i=0;i<n;i++){ cur.insert(i); } divide(cur,0,x,0); // check_element("0"); return ans; } /*int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); return 0; } */ /* g++ -o aa -O2 messy.cpp grader.cpp -std=c++14 */ /* 4 16 16 2 1 3 0 */

Compilation message (stderr)

messy.cpp: In function 'std::vector<int> restore_permutation(int, int, int)':
messy.cpp:72:10: warning: unused variable 'xx' [-Wunused-variable]
      int xx=(1<<i)-1;
          ^~
#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...