Submission #732006

#TimeUsernameProblemLanguageResultExecution timeMemory
732006senthetaData Transfer (IOI19_transfer)C++17
100 / 100
210 ms2500 KiB
#include "transfer.h" // author : sentheta aka vanwij #include<iostream> #include<iomanip> #include<algorithm> #include<cassert> #include<random> #include<chrono> #include<cmath> #include<string> #include<vector> #include<bitset> #include<queue> #include<stack> #include<map> #include<set> using namespace std; #define Int long long #define V vector #define pii pair<int,int> #define ff first #define ss second mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); #define pow2(x) (1LL<<(x)) #define msb(x) (63-__builtin_clzll(x)) #define bitcnt(x) (__builtin_popcountll(x)) #define nl '\n' #define _ << ' ' << #define all(x) (x).begin(), (x).end() #define rep(i,a,b) for(int i = (int)(a); i < (int)(b); i++) #define dbg(x) if(1) cout << "?" << #x << " : " << (x) << endl << flush; V<int> get_attachment(V<int> a) { V<int> b; int n = a.size(); a.push_back(0); rep(i,0,n){ a[n] ^= a[i]; } b.push_back(a[n]); for(int k=1; k<n; k<<=1){ int x = 0; rep(i,0,n+1) if(i&k){ x ^= a[i]; } // cout << k _ x << nl; b.push_back(x); } return b; } V<int> retrieve(V<int> a) { int n; if((int)a.size() < 200) n = 63; else n = 255; { int x = 0; rep(i,0,n) x ^= a[i]; if(x==a[n]){ return V<int>(a.begin(),a.begin()+n); } } int idx = 0; for(int k=1,j=n+1; k<n; k<<=1,j++){ int x = 0; rep(i,0,n+1) if(i&k){ x ^= a[i]; } // cout << k _ x << nl; if(x!=a[j]){ idx ^= k; } } a[idx] ^= 1; return V<int>(a.begin(),a.begin()+n); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...