Submission #746871

#TimeUsernameProblemLanguageResultExecution timeMemory
746871tutisGame (APIO22_game)C++17
2 / 100
12 ms14344 KiB
#pragma GCC optimize("O3")
#pragma GCC target("avx2")
#include <bits/stdc++.h>
using namespace std;
const int N = 300000;
int K;

vector<int>adj[2][N];
int mx[2][N];
void init(int n, int k) {
	K = k;
	for (int i = 0; i < n; i++)
		mx[0][i] = -k;
	for (int i = 0; i < k; i++)
		mx[0][i] = -(i + 1);
	for (int i = 0; i < k; i++)
		mx[1][i] = i;
	for (int i = k; i < n; i++)
		mx[1][i] = -1;
}

int add_teleporter(int u, int v) {
	int x = min(v, -mx[0][v]);
	int y = mx[1][u];
	if (y >= x)
		return 1;
	int V[2] = { -x, y};
	for (int t : {1, 0})
	{
		function<void(int)>dfs = [&](int i) {
			mx[t][i] = V[t];
			for (int j : adj[t][i])
				if (V[t] > mx[t][j])
					dfs(j);
		};
		if (V[t] > mx[t][v])
			dfs(v);
		swap(u, v);
	}
	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...