제출 #1270379

#제출 시각아이디문제언어결과실행 시간메모리
1270379WH8Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h> #include "messy.h" using namespace std; string ones; vector<int> p; void add(int l, int r){ string s=ones; //~ cout<<"s is " << s<<endl; int m=(l+r)/2; for(int i=l;i<=r;i++){ s[i]='0'; } for(int i=l;i<=m;i++){ s[i]='1'; //~ cout<<"adding " << s<<endl; add_element(s); s[i]='0'; } if(l!=r){ add(l, m); add(m+1, r); } } void check(int l, int r, vector<int> ind){ if(l==r){ assert(ind.size()==1); p[ind[0]]=l; return; } string s=ones; vector<int> toleft, toright; for(auto it:ind) s[it]='0'; for(auto it:ind){ s[it]='1'; if(check_element(s)){ toleft.push_back(it); } else toright.push_back(it); s[it]='0'; } int m=(l+r)/2; check(l, m, toleft); check(m+1, r, toright); }; vector<int> restore_permutation(int n, int w, int r) { //~ cout<<"n is " << n<<endl; for(int i=0;i<n;i++)ones+='1'; //~ cout<<"ones is " << ones<<endl; p.resize(n); fill(p.begin(),p.end(),-1); add(0, n-1); compile_set(); vector<int> v; for(int i=0;i<n;i++)v.push_back(i); check(0, n-1, v); //~ for(auto it:p)cout<<it<<endl; return p; }

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