Submission #1146344

#TimeUsernameProblemLanguageResultExecution timeMemory
1146344daveleUnscrambling a Messy Bug (IOI16_messy)C++20
38 / 100
1 ms328 KiB
#include <vector> #ifndef davele #include "messy.h" #endif // davele #include <bits/stdc++.h> #define pii pair<int, int> #define fi first #define se second #define vi vector <int> #define pq priority_queue #define MASK(i) (1ll<<(i)) #define BIT(x, i) (((x) >> (i)) & 1) #define x0 ___x0 #define y0 ___y0 #define div ___div #define next ___next #define prev ___prev #define left ___left #define right ___right #define pos pisosi #define pb push_back #define pf push_front using namespace std; //const int mod = ; //void add (int &a, const int&b){ // a+=b; // if (a>=mod) a-=mod; //} // //void sub (int&a, const int&b){ // a-=b; // if (a<0) a+=mod; //} // //void mul (int&a, const int&b){ // a*=b; // a%=mod; //} template<class X, class Y> bool minimize(X &x, const Y&y){ if (x<=y) return false; else{ x = y; return true; } } template<class X, class Y> bool maximize (X &x, const Y&y){ if (x>=y) return false; else{ x = y; return true; } } ///////////////////////////////////////////////////////////////////////////////// //const int lim = , limit = , inf = ; //// dang nhap ham #ifndef davele vector<int> restore_permutation(int n, int w, int r) { for (int i=1; i<=n; i++){ string tmp = ""; for (int j=1; j<=i; j++) tmp+="1"; for (int j=i+1; j<=n; j++) tmp+="0"; add_element(tmp); } compile_set(); set <int> ds; for (int i=0; i<n; i++) ds.insert(i); vector <int> ret(n, -1); string query(n, ' '); for (int i=0; i<n; i++){ for (int j=0; j<n; j++) query[j] = '0'; for (int j=0; j<n; j++) if (ret[j]>=0) query[j] = '1'; for (int x:ds){ query[x] = '1'; if (check_element(query)){ // cerr<<query<<"\n"; ret[x] = i; ds.erase(x); break; } query[x]='0'; } } return ret; } #endif // davele // //// chay thu ham main: // #ifdef davele int n, w, r; int p[1005]; set <string> set_; void add_element(string x) { set_.insert(x); } bool check_element(string x) { return set_.count(x); } void compile_set() { set<string> compiledSet; string compiledElement = string(n, ' '); for (set<string>::iterator it = set_.begin(); it != set_.end(); it++) { string s = *it; for (int i = 0; i < n; i++) { compiledElement[i] = s[p[i]]; } compiledSet.insert(compiledElement); } set_ = compiledSet; } vector<int> restore_permutation(int n, int w, int r) { for (int i=1; i<=n; i++){ string tmp = ""; for (int j=1; j<=i; j++) tmp+="1"; for (int j=i+1; j<=n; j++) tmp+="0"; add_element(tmp); } compile_set(); set <int> ds; for (int i=0; i<n; i++) ds.insert(i); vector <int> ret(n, -1); string query(n, ' '); for (int i=0; i<n; i++){ for (int j=0; j<n; j++) query[j] = '0'; for (int j=0; j<n; j++) if (ret[j]>=0) query[j] = '1'; for (int x:ds){ query[x] = '1'; if (check_element(query)){ // cerr<<query<<"\n"; ret[x] = i; ds.erase(x); break; } query[x]='0'; } } return ret; } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // // freopen (".inp", "r", stdin); // freopen (".out", "w", stdout); cin>>n>>w>>r; for (int i=0; i<n; i++) cin>>p[i]; vi tmp = restore_permutation(n, w, r); for (int x:tmp) cout<<x<<" "; } #endif // davele ////////////////////////////////////////////////////////////////////////////

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