제출 #1233334

#제출 시각아이디문제언어결과실행 시간메모리
1233334dssfsuper2Unscrambling a Messy Bug (IOI16_messy)C++20
100 / 100
1 ms584 KiB
#include <vector> #include "messy.h" #include <bits/stdc++.h> using namespace std; int k = 0; vector<int> perm; void recurse(string s, int l, int r){ if(l==r)return; for(int i = l;i<=(l+r)/2;i++){ s[i]='1'; //cout << s << '\n'; k++; add_element(s); s[i]='0'; } for(int i = l;i<=(l+r)/2;i++){ s[i]='1'; } recurse(s, (l+r)/2+1, r); for(int i = l;i<=(l+r)/2;i++){ s[i]='0'; } for(int i = (l+r)/2+1;i<=r;i++){ s[i]='1'; } recurse(s, l, (l+r)/2); } void recursefind(int l, int r, vector<int> known, string s){ //cout << l << ' ' << r << ' ' << s << ' '; //for(auto thing:known)cout << thing << ' ' ; //cout << '\n'; if(l==r){ perm[l]=known.back(); return; } vector<int> left, right; for(auto thing:known){ s[thing]='1'; bool t = check_element(s); s[thing]='0'; if(t){ left.push_back(thing); } else right.push_back(thing); } for(auto thing:right){ s[thing]='1'; } recursefind(l, (l+r)/2, left, s); for(auto thing:right)s[thing]='0'; for(auto thing:left)s[thing]='1'; recursefind((l+r)/2+1, r, right, s); } vector<int> restore_permutation(int n, int w, int r) { string s; perm.resize(n); for(int i = 0;i<n;i++){ s.push_back('0'); } recurse(s, 0, n-1); compile_set(); s=""; vector<int> known; for(int i = 0;i<n;i++){ s.push_back('0'); known.push_back(i); } recursefind(0, n-1, known, s); vector<int> rpe(n); for(int i = 0;i<n;i++){ rpe[perm[i]]=i; } return rpe; }

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