Submission #545218

#TimeUsernameProblemLanguageResultExecution timeMemory
545218AbdelmagedNourPoklon (COCI17_poklon7)C++17
48 / 120
293 ms81348 KiB
#include <bits/stdc++.h> #pragma GCC optimize("Ofast") using namespace std; const int N=1000005; int n,L[N],R[N]; pair<int,int>val[N]; pair<int,int>Max(pair<int,int>a,pair<int,int>b){ if(a.first==0)return b; if(b.first==0)return a; while(a.first<b.first&&a.second){ a.first*=2; a.second--; } if(a.first>=b.first&&a.second>=b.second){ while((a.first&1)==0){ a.first>>=1; a.second++; } return a; }else return b; } void dfs(int v){ pair<int,int>l={0,0},r={0,0}; if(L[v]>0){ dfs(L[v]); l=val[L[v]]; }else l={-L[v],0}; if(R[v]>0){ dfs(R[v]); r=val[R[v]]; }else r={-R[v],0}; val[v]=Max(l,r); val[v].second++; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n; for(int i=1;i<=n;i++)cin>>L[i]>>R[i]; dfs(1); string s=""; while(val[1].first){ s+=char('0'+(val[1].first&1)); val[1].first/=2; } reverse(s.begin(),s.end()); cout<<s; for(int i=0;i<val[1].second;i++)cout<<0; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...