Submission #1008569

#TimeUsernameProblemLanguageResultExecution timeMemory
1008569Math4Life2020Magic Show (APIO24_show)C++17
0 / 100
3 ms816 KiB
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> #include "Alice.h" using namespace std; using ll = long long; using ld = long double; using pii = pair<int,int>; ll N = 4999; ll E = 60; ld seed0 = 0.1434; ld seed = seed0; ld getseed() { seed = ((ld) 3.60)*seed*(((ld) 1.0)-seed); return seed; } ll getrng(ll x) { //random integer in [0,x-1] return (((ll) round(10000000000*getseed()))%x); } ll l2(ll x) { return (31-__builtin_clz(x)); } void rngreset() { seed=seed0; } vector<pii> Alice() { ll X = setN((int) N); vector<pii> vout; vector<ll> xv; for (ll e=(E-1);e>=0;e--) { xv.push_back((X>>e)%2); } for (ll n=1;n<N;n++) { ll D = l2(n)-1; ll val = 0; for (ll d=0;d<D;d++) { ll e = getrng(E); val += xv[e]*(1LL<<d); } vout.push_back({val+1,n+1}); } rngreset(); return vout; } long long Bob(vector<pii> V) { ll vals[N]; for (ll i=0;i<N;i++) { vals[i]=-1; } for (pii p0: V) { pii p1 = p0; if (p1.first<p1.second) { swap(p1.first,p1.second); } vals[p1.second-1]=p1.first-1; } vector<ll> xv; ll E = 60; for (ll e=(E-1);e>=0;e--) { xv.push_back(-1); } for (ll n=1;n<N;n++) { ll D = l2(n)-1; for (ll d=0;d<D;d++) { ll e = getrng(E); //val += xv[e]*(1LL<<d); if (vals[n]!=-1) { xv[e]=(vals[n]>>d)%2; } } } ll X = 0; for (ll e=0;e<E;e++) { X += xv[e]*(1LL<<(E-1-e)); } rngreset(); return X; }
// Source: https://usaco.guide/general/io #include <bits/stdc++.h> #include "Bob.h" using namespace std; using ll = long long; using ld = long double; using pii = pair<int,int>; ll N = 4999; ll E = 60; ld seed0 = 0.1434; ld seed = seed0; ld getseed() { seed = ((ld) 3.60)*seed*(((ld) 1.0)-seed); return seed; } ll getrng(ll x) { //random integer in [0,x-1] return (((ll) round(10000000000*getseed()))%x); } ll l2(ll x) { return (31-__builtin_clz(x)); } void rngreset() { seed=seed0; } long long Bob(vector<pii> V) { ll vals[N]; for (ll i=0;i<N;i++) { vals[i]=-1; } for (pii p0: V) { pii p1 = p0; if (p1.first<p1.second) { swap(p1.first,p1.second); } vals[p1.second-1]=p1.first-1; } vector<ll> xv; ll E = 60; for (ll e=(E-1);e>=0;e--) { xv.push_back(-1); } for (ll n=1;n<N;n++) { ll D = l2(n)-1; for (ll d=0;d<D;d++) { ll e = getrng(E); //val += xv[e]*(1LL<<d); if (vals[n]!=-1) { xv[e]=(vals[n]>>d)%2; } } } ll X = 0; for (ll e=0;e<E;e++) { X += xv[e]*(1LL<<(E-1-e)); } rngreset(); return X; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...