Submission #746880

#TimeUsernameProblemLanguageResultExecution timeMemory
746880tutisGame (APIO22_game)C++17
60 / 100
4032 ms43596 KiB
#pragma GCC optimize("O3") #pragma GCC target("avx2") #include <bits/stdc++.h> using namespace std; const int N = 300000; int K; struct data { vector<int>adj[N]; int mn[N]; void f(int u, int v, int x) { function<void(int)>dfs = [&](int i) { mn[i] = x; for (int j : adj[i]) if (mn[j] < x) dfs(j); }; if (mn[u] < x) dfs(u); adj[v].push_back(u); } int g(int v) { return mn[v]; } } q[2]; void init(int n, int k) { K = k; for (int i = 0; i < n; i++) q[0].mn[i] = -k; for (int i = 0; i < k; i++) q[0].mn[i] = -i - 1; for (int i = 0; i < k; i++) q[1].mn[i] = i; for (int i = k; i < n; i++) q[1].mn[i] = -1; } int add_teleporter(int u, int v) { int x = min(v, -q[0].g(v)); int y = q[1].g(u); if (y >= x) return 1; x = -x; q[0].f(u, v, x); q[1].f(v, u, y); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...