Submission #975707

#TimeUsernameProblemLanguageResultExecution timeMemory
975707ShaShiGame (APIO22_game)C++17
30 / 100
4038 ms55416 KiB
#include "game.h" #include <bits/stdc++.h> #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define mp make_pair #define pii pair<int, int> using namespace std; typedef long long ll; const int MAXN = (int)1e6 + 7; const int LG = 60; int dp[MAXN], pd[MAXN]; vector<int> adj[MAXN][2]; bool seen[MAXN]; int N, K, X; bool check(int x) { if (dp[x] <= pd[x]) return 1; return 0; } void init(int n, int k) { N = n; K = k; for (int i=0; i<N; i++) dp[i] = pd[i] = -1; } void DFS(int v, bool b) { seen[v] = 1; if (b) dp[v] = (dp[v] == -1? X : min(dp[v], X)); else pd[v] = (pd[v] == -1? X : max(pd[v], X)); for (int u:adj[v][b]) if (!seen[u]) DFS(u, b); } int add_teleporter(int u, int v) { if (u < K && v < K) { if (u >= v) return 1; return 0; } adj[u][0].pb(v); adj[v][1].pb(u); fill(seen, seen+N+1, 0); if (u < K) { X = u; DFS(u, 0); } else if (v < K) { X = v; DFS(v, 1); } else { X = pd[u]; DFS(u, 0); } for (int i=K; i<N; i++) if (dp[i] != -1 && pd[i] != -1 && dp[i] <= pd[i]) return 1; 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...