제출 #406344

#제출 시각아이디문제언어결과실행 시간메모리
406344balbitUnscrambling a Messy Bug (IOI16_messy)C++14
100 / 100
2 ms460 KiB
#include <vector> #include "messy.h" #include <bits/stdc++.h> using namespace std; #define ll long long #define y1 zck_is_king #define pii pair<int, int> #define ull unsigned ll #define f first #define s second #define ALL(x) x.begin(),x.end() #define SZ(x) (int)x.size() #define SQ(x) (x)*(x) #define MN(a,b) a = min(a,(__typeof__(a))(b)) #define MX(a,b) a = max(a,(__typeof__(a))(b)) #define pb push_back #define REP(i,n) for (int i = 0; i<n; ++i) #define RREP(i,n) for (int i = n-1; i>=0; --i) #define REP1(i,n) for (int i = 1; i<=n; ++i) #define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) #define BALBIT #ifdef BALBIT #define IOS() #define bug(...) fprintf(stderr,"#%d (%s) = ",__LINE__,#__VA_ARGS__),_do(__VA_ARGS__); template<typename T> void _do(T &&x){cerr<<x<<endl;} template<typename T, typename ...S> void _do(T &&x, S &&...y){cerr<<x<<", ";_do(y...);} #else #define IOS() ios_base::sync_with_stdio(0);cin.tie(0); #define endl '\n' #define bug(...) #endif const int iinf = 1e9+10; const ll inf = 1ll<<60; const ll mod = 1e9+7 ; void GG(){cout<<"0\n"; exit(0);} ll mpow(ll a, ll n, ll mo = mod){ // a^n % mod ll re=1; while (n>0){ if (n&1) re = re*a %mo; a = a*a %mo; n>>=1; } return re; } ll inv (ll b, ll mo = mod){ if (b==1) return b; return (mo-mo/b) * inv(mo%b,mo) % mo; } const int maxn = 1e5+5; void flp(char &c) { if (c == '0') c = '1'; else c = '0'; } std::vector<int> restore_permutation(int n, int w, int r) { // add_element("0"); // compile_set(); // check_element("0"); vector<int> re(n); int B = 1; while ((1<<B) < n) ++B; // int logB = 1; while((1<<logB) < B) ++logB; // bug(B, logB); string zeros = ""; REP(i,n) zeros+='0'; // string ones = ""; REP(i,n) ones+='1'; // for (int i = 1; i<=logB; ++i) { // string ask = ones; // for (int j = 0; j<i; ++j) { // ask[SZ(ask)-j-1] = '0'; // } // add_element(ask); // } string lask = zeros; for (int lay = 0; lay < B; ++lay) { string nask = zeros; { REP(i,n) { if ((1<<lay) & i) { string ask = lask; flp(ask[i]); add_element(ask); nask[i] = '1'; } } } lask = nask; } compile_set(); lask = zeros; for (int lay = 0; lay < B; ++lay) { string nask = zeros; REP(i,n) { string tt = lask; flp(tt[i]); if (check_element(tt)) { nask[i] = '1'; re[i] += (1<<lay); } } lask = nask; } return re; }
#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...