Submission #1321761

#TimeUsernameProblemLanguageResultExecution timeMemory
1321761benjaminkleyn이주 (IOI25_migrations)C++20
0 / 100
39 ms1192 KiB
#include "migrations.h" #include <bits/stdc++.h> using namespace std; int n; int P[10000]; vector<int> g[10000]; int dist[10000] = {0}; void dfs(int u, int p = -1) { if (p == -1) dist[u] = 0; for (int v : g[u]) if (v != p) { dist[v] = dist[u] + 1; dfs(v, u); } } int prev_a, prev_b; int a, b; void find_diameter() { prev_a = a; prev_b = b; a = b = 0; dfs(0); for (int i = 0; i < n; i++) if (dist[i] > dist[a]) a = i; dfs(a); for (int i = 0; i < n; i++) if (dist[i] > dist[b]) b = i; if (a > b) swap(a, b); } bool cancelled = false; int send_message(int N, int i, int Pi) { n = N; g[i].push_back(Pi); g[Pi].push_back(i); if (N - 38 <= i && i < N - 24) { find_diameter(); return (a >> (2 * (i - (N - 38)))) & 0b11; } if (N - 24 <= i && i < N - 10) { find_diameter(); return (b >> (2 * (i - (N - 24)))) & 0b11; } if (N - 10 <= i && i < N - 5) { find_diameter(); if (a == i) return 3; if (b == i) return 4; if (N - 38 <= a && a < N - 10) return ((N - 10 - a) >> (i - (N - 10))) & 1; return 0; } if (N - 5 <= i) { find_diameter(); if (a == i) return 3; if (b == i) return 4; if (N - 38 <= b && b < N - 10) return ((N - 10 - b) >> (i - (N - 5))) & 1; return 0; } return 0; } pair<int, int> longest_path(vector<int> S) { int N = S.size(); int a = 0, b = 0; for (int i = N - 38; i < N - 24; i++) a |= S[i] << (2 * (i - (N - 40))); for (int i = N - 24; i < N - 10; i++) b |= S[i] << (2 * (i - (N - 24))); int offset_a = 0, offset_b = 0; for (int i = N - 10; i < N - 5; i++) offset_a |= S[i] << (i - (N - 10)); for (int i = N - 5; i < N; i++) offset_b |= S[i] << (i - (N - 5)); if (0 < offset_a && offset_a <= 28) a = N - 10 - offset_a; if (0 < offset_b && offset_b <= 28) b = N - 10 - offset_b; for (int i = N - 10; i < N; i++) { if (S[i] == 3) a = i; if (S[i] == 4) b = i; } return {a, b}; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...