Submission #1154352

#TimeUsernameProblemLanguageResultExecution timeMemory
1154352AlgorithmWarriorUnscrambling a Messy Bug (IOI16_messy)C++20
49 / 100
1 ms580 KiB
#include <vector> #include <cstdio> #include <string> #include <set> #include <cstdlib> #include <iostream> #include "messy.h" using namespace std; vector<int> restore_permutation(int n, int w, int r) { vector<int>answer(n); string sir; int i,j; for(i=0;i<n;++i) sir.push_back('0'); if(w<r){ for(i=0;i<n;++i){ sir[i]='1'; add_element(sir); } compile_set(); for(i=0;i<n;++i) sir[i]='0'; for(i=0;i<n;++i){ bool gasit=0; for(j=0;!gasit;++j) if(sir[j]=='0'){ sir[j]='1'; if(check_element(sir)){ gasit=1; answer[j]=i; } else sir[j]='0'; } } } else{ sir[n-1]='1'; add_element(sir); sir[n-1]='0'; for(i=0;i<n-2;++i){ sir[i]='1'; for(j=i+1;j<n;++j){ sir[j]='1'; add_element(sir); sir[j]='0'; } } compile_set(); for(i=0;i<n;++i) sir[i]='0'; for(i=0;i<n-2;++i){ vector<int>pos; for(j=0;j<n;++j) if(sir[j]=='0') pos.push_back(j); int gasit=-1; for(j=0;j<(int)pos.size()-2 && gasit==-1;j+=2){ sir[pos[j]]='1'; sir[pos[j+1]]='1'; if(check_element(sir)){ sir[pos[j+1]]='0'; sir[pos[pos.size()-1]]='1'; if(check_element(sir)) gasit=pos[j]; else gasit=pos[j+1]; sir[pos[pos.size()-1]]='0'; sir[pos[j]]='0'; } else{ sir[pos[j]]='0'; sir[pos[j+1]]='0'; } } if(gasit==-1){ if(j==(int)pos.size()-2){ sir[pos[0]]='1'; sir[pos[j]]='1'; if(check_element(sir)) gasit=pos[j]; else gasit=pos[j+1]; sir[pos[0]]='0'; sir[pos[j]]='0'; } else gasit=pos[j]; } answer[gasit]=i; sir[gasit]='1'; } int pos1=-1,pos2=-1; for(i=0;i<n;++i) if(sir[i]=='0'){ if(pos1==-1) pos1=i; else pos2=i; } for(i=0;i<n;++i) if(i==pos1) sir[i]='1'; else sir[i]='0'; if(check_element(sir)){ answer[pos1]=n-1; answer[pos2]=n-2; } else{ answer[pos1]=n-2; answer[pos2]=n-1; } } return answer; }

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