Submission #1151214

#TimeUsernameProblemLanguageResultExecution timeMemory
1151214alexddUnscrambling a Messy Bug (IOI16_messy)C++20
20 / 100
1 ms580 KiB
#include "messy.h" #include <bits/stdc++.h> using namespace std; vector<int> brut(int n) { for(int i=1;i<=n;i++) { string s=""; for(int j=0;j<i;j++) s.push_back('1'); for(int j=0;j<n-i;j++) s.push_back('0'); add_element(s); } compile_set(); string cur=""; for(int i=0;i<n;i++) cur.push_back('0'); vector<int> perm(n); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(cur[j]=='0') { cur[j]='1'; if(check_element(cur)) { perm[j]=i; break; } cur[j]='0'; } } } return perm; } std::vector<int> restore_permutation(int n, int w, int r) { if(n==8) return brut(n); int cntb=0; while((1<<cntb)<=n) cntb++; for(int i=0;i<cntb;i++) { string s=""; for(int j=0;j<=i;j++) s.push_back('1'); for(int j=0;j<n-i-1;j++) s.push_back('0'); add_element(s); } for(int i=cntb;i<n;i++) { string pref=""; for(int j=0;j<cntb;j++) { if((1<<j)&i) pref.push_back('1'); else pref.push_back('0'); } string suff=""; for(int j=cntb;j<n;j++) { if(j==i) suff.push_back('0'); else suff.push_back('1'); } add_element(pref+suff); for(int j=cntb-1;j>=0;j--) { if(pref[j]=='1') { pref[j]='0'; add_element(pref+suff); } } } compile_set(); string cur=""; for(int i=0;i<n;i++) cur.push_back('0'); vector<int> mici(cntb),sol(n); vector<bool> ismic(n,0); for(int i=0;i<cntb;i++) { for(int j=0;j<n;j++) { if(cur[j]=='0') { cur[j]='1'; if(check_element(cur)) { mici[i]=j; sol[j]=i; ismic[j]=1; //cout<<i<<" "<<j<<" mic\n"; break; } cur[j]='0'; } } } for(int i=cntb;i<n;i++) { string s=""; int cur=cntb; for(int j=0;j<n;j++) { if(ismic[j]) s.push_back('0'); else { if(cur==i) s.push_back('0'); else s.push_back('1'); cur++; } } assert(check_element(s)); int sum=0; for(int j=0;j<cntb;j++) { s[mici[j]]='1'; if(check_element(s)) { sum += (1<<j); } else s[mici[j]]='0'; } //cerr<<i<<" "<<sum<<" zzz\n"; sol[sum]=i; } return sol; } /* 4 16 16 2 1 3 0 */

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...