Submission #304599

#TimeUsernameProblemLanguageResultExecution timeMemory
304599ryanseeMechanical Doll (IOI18_doll)C++14
84 / 100
345 ms42520 KiB
#include "doll.h" #include "bits/stdc++.h" using namespace std; #define FAST ios_base::sync_with_stdio(false); cin.tie(0); #define pb push_back #define eb emplace_back #define ins insert #define f first #define s second #define cbr cerr<<"hi\n" #define mmst(x, v) memset((x), v, sizeof ((x))) #define siz(x) ll(x.size()) #define all(x) (x).begin(), (x).end() #define lbd(x,y) (lower_bound(all(x),y)-x.begin()) #define ubd(x,y) (upper_bound(all(x),y)-x.begin()) mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); //can be used by calling rng() or shuffle(A, A+n, rng) inline long long rand(long long x, long long y) { return rng() % (y+1-x) + x; } //inclusivesss string inline to_string(char c) {string s(1,c);return s;} template<typename T> inline T gcd(T a,T b){ return a==0?llabs(b):gcd(b%a,a); } using ll=long long; using ld=long double; #define FOR(i,s,e) for(ll i=s;i<=ll(e);++i) #define DEC(i,s,e) for(ll i=s;i>=ll(e);--i) using pi=pair<ll,ll>; using spi=pair<ll,pi>; using dpi=pair<pi,pi>; #define LLINF ((long long)1e18) #define INF int(1e9+1e6) #define MAXN (300006) vector<int> X, Y, jy; ll lvl, co=-1; struct node { int s,e,m; ll v,state; node*l,*r; node(int S,int E){ s=S,e=E,m=(s+e)>>1; v=0,state=0; if(s^e)l=new node(s,m),r=new node(m+1,e); else l=r=0; } void assign(int sz){ if(sz<=0) return; if(s==e) { assert(sz==1); return; } int rs = e-m; r->assign(min(rs, sz)); if(sz>rs) l->assign(sz-rs); else l=0; } ll trav() { if(s==e) { assert(v==0); v = jy.back(), jy.pop_back(); return v; } if(v==0) { v = co --; X.eb(-1), Y.eb(-1); } if(state==0) state^=1, X[-v-1]=(!l?-1:(l->trav())); else state^=1, assert(r), Y[-v-1]=r->trav(); return v; } }*seg; void create_circuit(int M, std::vector<int> A) { jy=A,jy.eb(0); vector<int> D(M+1,-1); DEC(i,25,0) if((1<<i) > siz(jy)) lvl=i; seg=new node(1, 1<<lvl); seg->assign(siz(jy)); reverse(all(jy)); while(jy.size()) seg->trav(); answer(D,X,Y); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...