Submission #740998

#TimeUsernameProblemLanguageResultExecution timeMemory
740998LittleCubeGame (APIO22_game)C++17
60 / 100
4046 ms39688 KiB
#pragma GCC optimize("Ofast,unroll-loops") #include "game.h" #ifndef EVAL #include "game_grader.cpp" #endif #include <bits/stdc++.h> #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> using namespace std; namespace { int n, k, from[300000], to[300000]; vector<int> Ef[300000], Et[300000]; void update_from(int u) { for (auto v : Ef[u]) if (from[u] > from[v]) { from[v] = from[u]; update_from(v); } } void update_to(int u) { for (auto v : Et[u]) if (to[u] < to[v]) { to[v] = to[u]; update_to(v); } } } void init(int n, int k) { ::n = n, ::k = k; for (int i = 0; i < k; i++) from[i] = i, to[i] = i; for (int i = k; i < n; i++) from[i] = -1, to[i] = k + 1; } int add_teleporter(int u, int v) { if (u < k && v < k) { if (v <= u) return 1; return 0; } Ef[u].emplace_back(v); Et[v].emplace_back(u); from[v] = max(from[v], from[u]); to[u] = min(to[u], to[v]); bool flag = 0; if (v >= k) { update_from(v); flag |= (from[v] >= to[v]); } if (u >= k) { update_to(u); flag |= (from[u] >= to[u]); } return flag; }
#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...