Submission #709367

#TimeUsernameProblemLanguageResultExecution timeMemory
709367600MihneaGame (APIO22_game)C++17
2 / 100
1 ms208 KiB
#include <cstdio> #include <cstdlib> #include <vector> #include "game.h" #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 <bitset> #include <cassert> #include <sstream> #include <chrono> #include <cstring> #include <numeric> using namespace std; int n; int k; vector<int> mn; vector<int> mx; vector<vector<int>> g; vector<vector<int>> ig; void init(int nn, int kk) { n = nn; k = kk; mn.clear(); mx.clear(); g.clear(); ig.clear(); mn.resize(n + 1); mx.resize(n + 1); g.resize(n + 1); ig.resize(n + 1); for (int i = 1; i <= n; i++) { mx[i] = -1; mn[i] = k + 1; } for (int i = 1; i <= k; i++) { mn[i] = i; } } bool F = 0; void upd(int from, int to) { if (F) { return; } { int val = (to <= k) ? (to) : (mn[to]); if (val < mn[from]) { mn[from] = val; for (auto& vec : ig[from]) { upd(vec, from); } } } { int val = (from <= k) ? (from) : mx[from]; if (val > mx[to]) { mx[to] = val; for (auto& vec : g[to]) { upd(vec, to); } } } if (mn[from] <= mx[from]) { F = 1; } if (mn[to] <= mx[to]) { F = 1; } } int add_teleporter(int from, int to) { from++; to++; assert(1 <= from && from <= n); assert(1 <= to && to <= n); if (from == to) { if (from <= k) { return 1; } else { return 0; } } if (to < from && from <= k) { return 1; } upd(from, to); return F; }
#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...