Submission #707961

# Submission time Handle Problem Language Result Execution time Memory
707961 2023-03-10T15:28:53 Z 600Mihnea Game (APIO22_game) C++17
2 / 100
1 ms 248 KB
#include "game.h"
#include <cmath>
#include <functional>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <cassert>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
#include <numeric>

using namespace std;

const int INF = (int)1e9 + 7;
int n;
int k;
vector<vector<int>> g, ig;
vector<pair<int, int>> range;

void init(int nn, int kk)
{
	n = nn;
	k = kk;
	g.clear();
	ig.clear();
	range.clear();
	g.resize(n + 1);
	ig.resize(n + 1);
	range.resize(n + 1);
	for (int i = 1; i <= k; i++)
	{
		range[i] = { i, i };
	}
	for (int i = k + 1; i <= n; i++)
	{
		range[i] = { 0, k + 1 };
	}
}

int upd(int from, int to)
{
	if (range[from].first >= range[to].second) return 1;
	if (range[from].second <= range[to].first) return 0;


	while (range[from].first > (range[to].first + range[to].second) / 2)
	{
		range[to].first = (range[to].first + range[to].second) / 2;
		for (auto& vertex : g[to])
		{
			if (upd(to, vertex))
			{
				return 1;
			}
		}
	}
	
	if (range[to].second < (range[from].second + range[from].first) / 2 + 1)
	{
		range[from].second = (range[from].second + range[from].first) / 2 + 1;
		for (auto& vertex : ig[from])
		{
			if (upd(vertex, from))
			{
				return 1;
			}
		}
	}

	return 0;
}

int add_teleporter(int from, int to)
{
	from++;
	to++;
	assert(1 <= from && from <= n);
	assert(1 <= to && to <= n);

	g[from].push_back(to);
	ig[to].push_back(from);

	if (from >= to && from <= k) return 1;
	if (from == to) return 0;

	return upd(from, to);
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 208 KB Output is correct
7 Correct 1 ms 248 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 208 KB Output is correct
7 Correct 1 ms 248 KB Output is correct
8 Incorrect 0 ms 208 KB Wrong Answer[1]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 208 KB Output is correct
7 Correct 1 ms 248 KB Output is correct
8 Incorrect 0 ms 208 KB Wrong Answer[1]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 208 KB Output is correct
7 Correct 1 ms 248 KB Output is correct
8 Incorrect 0 ms 208 KB Wrong Answer[1]
9 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 208 KB Output is correct
2 Correct 0 ms 208 KB Output is correct
3 Correct 1 ms 208 KB Output is correct
4 Correct 0 ms 208 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 208 KB Output is correct
7 Correct 1 ms 248 KB Output is correct
8 Incorrect 0 ms 208 KB Wrong Answer[1]
9 Halted 0 ms 0 KB -