Submission #707962

#TimeUsernameProblemLanguageResultExecution timeMemory
707962600MihneaGame (APIO22_game)C++17
2 / 100
1 ms308 KiB
#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; 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 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...