Submission #1247823

#TimeUsernameProblemLanguageResultExecution timeMemory
1247823rythm_of_knightMinerals (JOI19_minerals)C++17
80 / 100
17 ms2628 KiB
#include "minerals.h" #include <bits/stdc++.h> using namespace std; vector <int> a, b; static int cnt = 0, n, m; void rec(int l, int r, int k, vector <int> q) { if (l == r) return Answer(a[l], q[0]), void(); int m = l + r >> 1, lk = k, rk = k; vector <int> lft, rgt; if (k & 1) { for (int i = m + 1; i <= r; i++) cnt = Query(a[i]); lk ^= 2, rk ^= 3; } else { for (int i = l; i <= m; i++) cnt = Query(a[i]); lk = k ^ 3, rk = k ^ 2; } for (int j : q) { int tmp = Query(j); if (tmp == cnt) { lft.push_back(j); } else { rgt.push_back(j); } cnt = tmp; } rec(l, m, lk, lft); rec(m + 1, r, rk, rgt); } void Solve(int N) { n = N, m = 2 * n; for (int i = 1; i <= m; i++) { int tmp = Query(i); if (tmp != cnt) a.push_back(i); else b.push_back(i); cnt = tmp; } rec(0, n - 1, 3, b); }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...