Submission #348833

#TimeUsernameProblemLanguageResultExecution timeMemory
348833JovanK26Poklon (COCI17_poklon7)C++14
114 / 120
458 ms126804 KiB
#include <bits/stdc++.h> using namespace std; int n,m; int f[2000010]; int maks[2000010]; vector<int> v[2000010]; void dfs(int node,int dep) { if(node>=n) { maks[dep]=max(maks[dep],f[node]); } else { dfs(v[node][0],dep+1); dfs(v[node][1],dep+1); } } int main() { memset(maks,-1,sizeof(maks)); ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int a,b; cin >> n; m=n; for(int i=0;i<n;i++) { cin >> a >> b; if(a>0) { v[i].push_back(a-1); } else { f[m]=-a; v[i].push_back(m); m++; } if(b>0) { v[i].push_back(b-1); } else { f[m]=-b; v[i].push_back(m); m++; } } dfs(0,0); int rez=-1; int rezdep=-1; for(int i=0;i<n;i++) { if(maks[i]==-1)continue; bool check=0; if(rez==-1) { check=1; } else { int q=(rez+maks[i]-1)/maks[i]; int pow2=1; for(int j=0;j<i-rezdep;j++) { pow2*=2; if(q<=pow2) { check=1; break; } } } if(check) { rez=maks[i]; rezdep=i; } } vector<int> ans; for(int i=0;i<rezdep;i++) { ans.push_back(0); } while(rez) { ans.push_back(rez&1); rez/=2; } reverse(ans.begin(),ans.end()); for(int i=0;i<ans.size();i++) { cout << ans[i]; } return 0; }

Compilation message (stderr)

poklon.cpp: In function 'int main()':
poklon.cpp:95:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   95 |     for(int i=0;i<ans.size();i++)
      |                 ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...