Submission #714553

#TimeUsernameProblemLanguageResultExecution timeMemory
714553firewaterMechanical Doll (IOI18_doll)C++14
100 / 100
156 ms12168 KiB
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include <vector> #define ll long long #define N 202300 #include "doll.h" using namespace std; vector<int>ans,P,Q; int w,n,nn,v[N],a[N]; int dfs(int L,int R,int l,int r) { if(L==R){ if(L==1)return 0; return v[l]; } int x=P.size(),y,z,mid=L+R>>1; P.push_back(0); Q.push_back(0); if(r<=mid){ y=-1; z=dfs(L,mid,l,r); } else{ y=dfs(mid+1,R,mid+1,r); z=dfs(L,mid,l,mid); } P[x]=y; Q[x]=z; return -x-1; } bool cmp(int x,int y) { while((x&1)==(y&1)){ x>>=1; y>>=1; } return (x&1)>(y&1); } void create_circuit(int M, std::vector<int> A) { n=A.size(); for(int i=1;i<=n;++i) a[i]=i; sort(a+1,a+1+n,cmp); for(int i=1;i<=n;++i) v[a[i]+1]=A[i-1]; nn=1; while(nn<n+1)nn<<=1; if(n==1){ ans.push_back(A[0]); for(int i=1;i<=M;++i) ans.push_back(0); } else{ for(int i=0;i<=M;++i) ans.push_back(-1); dfs(1,nn,1,n+1); } answer(ans,P,Q); return; }

Compilation message (stderr)

doll.cpp: In function 'int dfs(int, int, int, int)':
doll.cpp:18:26: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   18 |  int x=P.size(),y,z,mid=L+R>>1;
      |                         ~^~
#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...