#include <bits/stdc++.h>
#include "minerals.h"
using namespace std;
int distinct=0;
void GetAns(vector<int>& X, vector<int>& Y, bool is_X){ //state 0
if(X.size()==1){
Answer(X[0],Y[0]);
return;
}
vector<int> new_leftX, new_rightX;
vector<int> new_leftY, new_rightY;
//half
int middleX = X.size()/2;
for(int i=0; i<middleX; ++i) new_leftX.push_back(X[i]);
for(int i=middleX; i<X.size(); ++i) new_rightX.push_back(X[i]);
if (is_X){
for (int i = middleX; i<X.size(); ++i) distinct = Query(X[i]);
}
else{
for(int i=0; i<middleX; ++i) distinct = Query(X[i]);
}
for(int i=0; i<Y.size(); ++i){
int curr = Query(Y[i]);
if(curr == distinct){
new_leftY.push_back(Y[i]);
}
else{
new_rightY.push_back(Y[i]);
}
distinct = curr;
}
GetAns(new_leftX, new_leftY, true);
GetAns(new_rightX, new_rightY, false);
}
void Solve(int n){
//second level
vector<int> lockSet, keySet;
for(int i=1; i<=2*n; ++i){
if(Query(i)==distinct) keySet.push_back(i);
else{
distinct++;
lockSet.push_back(i);
}
}
GetAns(lockSet, keySet, true);
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |