Submission #746082

#TimeUsernameProblemLanguageResultExecution timeMemory
746082Rafi22Mechanical Doll (IOI18_doll)C++14
84 / 100
122 ms42196 KiB
#include <bits/stdc++.h> #include "doll.h" using namespace std; #define endl '\n' #define st first #define nd second #define pb push_back #define sz(x) (int)(x).size() #define all(x) (x).begin(), (x).end() #define ll long long ll mod=1000000007; int inf=1000000007; ll infl=1000000000000000007; const int N=200007; int it,n; int x[N+20]; int y[N+20]; bool state[N+20]; bool kon[N+20]; void build(int v,int l,int r) { if(l+1==r) { kon[v]=1; if(n==l) x[v]=-1; return ; } it++; y[v]=-it; build(it,l,(l+r)/2); if(n>(l+r)/2) { it++; x[v]=-it; build(it,(l+r)/2+1,r); } else x[v]=-1; } void push(int v,int k) { state[v]^=1; if(state[v]) { if(kon[v]) { if(x[v]==-1) push(1,k); else x[v]=k; } else push(-x[v],k); } else { if(kon[v]) { if(y[v]==-1) push(1,k); else y[v]=k; } else push(-y[v],k); } } /*void answer(vector<int>c,vector<int>X,vector<int>Y) { for(auto a:c) cout<<a<<" "; cout<<endl; for(auto a:X) cout<<a<<" "; cout<<endl; for(auto a:Y) cout<<a<<" "; cout<<endl; }*/ void create_circuit(int m,vector<int>a) { vector<int>c(m+1); n=sz(a); c[0]=a[0]; for(int i=1;i<=m;i++) c[i]=-1; int p=1; while(p<n) p*=2; it++; build(1,1,p); for(int i=0;i<n-1;i++) push(1,a[i+1]); push(1,0); vector<int>X,Y; for(int i=1;i<=it;i++) X.pb(x[i]); for(int i=1;i<=it;i++) Y.pb(y[i]); answer(c,X,Y); } /*int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); create_circuit(5,{1,2,1,1,1}); return 0; }*/
#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...