# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
137929 | zoooma13 | Minerals (JOI19_minerals) | C++14 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "bits/stdc++.h"
#include "minerals.h"
#include "grader.cpp"
using namespace std;
void go(vector<int> h1 ,vector<int> h2){
if(h1.size() == 1 && h2.size() == 1){
Answer(h1.front() ,h2.front());
return;
}
vector <int> nh1 = vector<int>{h1.begin() ,h1.begin()+h1.size()/2};
vector <int> nh2 = vector<int>{h1.begin()+h1.size()/2 ,h1.end()};
for(int i=0; i<nh1.size(); i++)
Query(nh1[i]);
vector <int> mh1 ,mh2;
for(int i=0; i<h2.size(); i++){
if(Query(h2[i]) == nh1.size())
mh1.push_back(h2[i]);
else
mh2.push_back(h2[i]);
Query(h2[i]);
}
for(int i=0; i<nh1.size(); i++)
Query(nh1[i]);
if(nh1.size()) go(nh1 ,mh1);
if(nh2.size()) go(nh2 ,mh2);
}
void Solve(int N) {
vector <int> h1 ,h2;
for(int lst=0,i=1; i<=2*N; i++){
if(Query(i) == lst)
h2.push_back(i);
else
h1.push_back(i) ,lst++;
}
for(int i=1; i<=2*N; i++)
Query(i);
go(h1 ,h2);
}