| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 | 
|---|---|---|---|---|---|---|---|
| 1226099 | loloka | Minerals (JOI19_minerals) | C++20 | 0 ms | 0 KiB | 
#include<bits/stdc++.h>
using namespace std;
void slv(vector<int> v1, vector<int> v2) {
	if((int)v1.size() == 1) {
		Answer(v1[0], v2[0]);
		return;
	}
	/*for(auto i : v1) cout << i << " ";
	cout << "\n";
	for(auto i : v2) cout << i << " ";
	cout << "\n\n";*/
	int kl = 0;
	int n = (int)v1.size();
	vector<int> h11, h12, h21, h22;
	for(int i = 0; i < n / 2; i++) h11.push_back(v1[i]), kl = Query(v1[i]);
	for(int i = n / 2; i < n; i++) h21.push_back(v1[i]);
	for(int i = 0; i < n; i++) {
		int k = Query(v2[i]);
		if(k == kl) h12.push_back(v2[i]);
		else h22.push_back(v2[i]);
		kl = k;
	}
	for(int i = 0; i < n / 2; i++) kl = Query(v1[i]);
	for(int i = 0; i < n; i++) kl = Query(v2[i]);
	slv(h11, h12), slv(h21, h22);
}
void Solve(int n) {
	vector<int> v1, v2;
	int kl = 0;
	for(int i = 1; i <= 2 * n; i++) {
		int k = Query(i);
		if(k == kl) v2.push_back(i);
		else v1.push_back(i);
		kl = k;
	}
	for(int i = 1; i < 2 * n; i++) Query(i);
	slv(v1, v2);
}
