제출 #144038

#제출 시각아이디문제언어결과실행 시간메모리
144038dorijanlendvajUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
6 ms504 KiB
#include <bits/stdc++.h> #pragma GCC optimize("unroll-loops") using namespace std; #define x first #define y second #define ll long long #define pii pair<int,int> #define vi vector<int> #define vl vector<ll> #define pb push_back const char en='\n'; #include "messy.h" void flip(string&a,int i) { a[i]='0'+'1'-a[i]; } bool debug=0; int rr,ww; void add(string b) { ++ww; add_element(b); if (debug) cout<<"added "<<b<<endl; } bool check(string b,int r) { ++rr; flip(b,r); bool x=check_element(b); flip(b,r); return x; } vi restore_permutation(int n, int w, int r) { //assert(n==8); string b; for (int i=0;i<n;++i) b.pb('0'); mt19937 rng1(1),rng2(1); for (int i=1;i<n;i*=2) { string c=b; for (int j=0;j<n;++j) if (j&i) { flip(b,j); flip(c,j); add(b); flip(b,j); } b=c; } compile_set(); string a; for (int i=0;i<n;++i) a.pb('0'); vi ans(n); for (int i=0;(1<<i)<n;++i) { if (debug) cout<<"a is "<<a<<endl; string c=a; for (int j=0;j<n;++j) if (check(a,j)) { flip(c,j); ans[j]+=1<<i; } a=c; } vi bio(n); for (auto a: ans) ++bio[a]; int z=0; for (auto a: bio) z+=abs(a-1); return ans; }
#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...