Submission #710558

#TimeUsernameProblemLanguageResultExecution timeMemory
710558LittleCubeMinerals (JOI19_minerals)C++14
80 / 100
48 ms3292 KiB
#include "minerals.h" #include <bits/stdc++.h> #define pii pair<int, int> #define F first #define S second using namespace std; int pre, cur; bool change(int x) { // cerr << "change " << x << '\n'; cur = Query(x); swap(pre, cur); return pre != cur; } void solve(vector<int> X, vector<int> Y, bool bX, bool bY) { if(X.size() == 1) { Answer(X[0], Y[0]); return; } int N = X.size(), mid = N / 2; vector<int> lX(X.begin(), X.begin() + mid), rX(X.begin() + mid, X.end()), lY, rY; if(bX) for(int i = mid; i < N; i++) change(X[i]); else for(int i = 0; i < mid; i++) change(X[i]); for(int i : Y) if(change(i)) rY.emplace_back(i); else lY.emplace_back(i); solve(lX, lY, 1, !bY); solve(rX, rY, 0, !bY); } void Solve(int N) { pre = cur = 0; vector<int> X, Y; for(int i = 1; i <= 2 * N; i++) { if(change(i)) X.emplace_back(i); else Y.emplace_back(i); } solve(X, Y, 1, 1); }
#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...