Submission #1258095

#TimeUsernameProblemLanguageResultExecution timeMemory
1258095jamesbamberMigrations (IOI25_migrations)C++20
30 / 100
28 ms456 KiB
#include "migrations.h" #include <iostream> using namespace std; int LOG = 14; int d1, d2; int to_send; vector<int> depth; int send_message(int N, int i, int Pi) { if(i == 1) { depth.assign(N, 0); d1 = 0; } bool new_diam = 0; depth[i] = depth[Pi] + 1; if(depth[i] > depth[d2]) d2 = i, new_diam = 1; if(i + LOG < N) return 0; if(i + LOG == N) to_send = d2; int bit = N - i - 1; cerr << to_send << endl; int message = 1; message += (to_send >> bit) & 1; if(new_diam) message += 2; return message; } std::pair<int, int> longest_path(std::vector<int> S) { int N = S.size(); int edge = -1; for(int i=0; i<N; i++) { S[i]--; if(S[i] < 0) continue; if((S[i] >> 1) & 1) edge = i; } if(edge != -1) return {0, edge}; edge = 0; for(int bit=0; bit<LOG; bit++) { int i = N - 1 - bit; edge += (S[i] % 2) << bit; } return {0, edge}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...