제출 #1310893

#제출 시각아이디문제언어결과실행 시간메모리
1310893matereUnscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
2 ms588 KiB
#include "messy.h" #include <bits/stdc++.h> using namespace std; vector<int> restore_permutation(int n, int w, int r){ vector<int> cl(129); int cnt=n; while(cnt>1){ for(int i=1;i<=n;i++){ cl[i]=(i+cnt-1)/cnt; } cnt/=2; for(int cur=1;cur<=cl[n];cur++){ string s=""; for(int i=1;i<=n;i++){ if(cl[i]!=cur) s+="1"; else s+="0"; } for(int i=1;i<=n;i++){ if(cl[i]==cur){ for(int j=i;j<i+cnt;j++){ s[j-1]='1'; add_element(s); s[j-1]='0'; } break; } } } } compile_set(); vector<int> ans(n+1),ans2(n+1); for(int i=1;i<=n;i++){ ans[i]=0; } cnt=n; while(cnt>1){ ans2=ans; vector<int>cl2; for(int cur=0;cur<cl[n];cur++){ string s=""; for(int i=1;i<=n;i++){ if(ans[i]!=cur) s+="1"; else s+="0"; } for(int i=1;i<=n;i++){ if(ans[i]==cur){ s[i-1]='1'; // cout<<s<<endl; bool is=check_element(s); ans2[i]*=2; // cout<<s<<' '; if(!is){ // cout<<'+'; ans2[i]++; } // cout<<endl; s[i-1]='0'; } } } ans=ans2; // for(int i=1;i<=n;i++) cout<<ans[i]<<' '; // cout<<endl; cnt/=2; } ans.erase(ans.begin()); return ans; }

컴파일 시 표준 에러 (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...