Submission #405190

#TimeUsernameProblemLanguageResultExecution timeMemory
405190Aryan_RainaPoklon (COCI17_poklon7)C++14
48 / 120
335 ms111564 KiB
#include <bits/stdc++.h>
using namespace std; 

#define int int64_t
#define ld long double
#define ar array

const int INF = 1e17;
const int MOD = 1e9+7;

int32_t main() {
   ios_base::sync_with_stdio(0);
   cin.tie(0); cout.tie(0);

   int N; cin >> N;
   vector<ar<int,2>> adj(N);
   for (auto &i : adj) {
      cin >> i[0] >> i[1];
      if (i[0] > 0) --i[0];
      if (i[1] > 0) --i[1];
   }

   int ans = 0;
   function<void(int, int)> dfs = [&](int u, int depth) {
      int lc = adj[u][0], rc = adj[u][1];

      if (lc < 0) ans = max(-lc * (1 << depth), ans);
      else dfs(lc, depth + 1);
      
      if (rc < 0) ans = max(-rc * (1 << depth), ans);
      else dfs(rc, depth + 1);
   };
   dfs(0, 1);
   
   vector<int> remdi; 
   while (ans) { remdi.push_back(ans & 1); ans >>= 1; }
   reverse(remdi.begin(), remdi.end());

   for (int i : remdi) cout << i;
}  
 
#Verdict Execution timeMemoryGrader output
Fetching results...