| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1322348 | mannshah1211 | Minerals (JOI19_minerals) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "minerals.h"
using namespace std;
void Merge(vector<int> a, vector<int> b) {
if (a.size() == 1) {
Answer(a[0], b[0]);
return;
}
vector<int> c, d, x, y;
int p = 0;
for (int i = 0; i < a.size() / 2; i++) {
c.push_back(a[i]);
p = Query(a[i]);
}
for (int i = a.size() / 2; i < a.size(); i++) {
d.push_back(a[i]);
}
for (int i = 0; i < b.size(); i++) {
if (Query(b[i]) == p + 1) {
y.push_back(b[i]);
} else {
x.push_back(b[i]);
}
Query(b[i]);
}
Merge(c, x);
Merge(d, y);
return;
}
void Solve(int n) {
vector<int> a;
int p = 0;
for (int i = 1; i <= 2 * n; i++) {
if (Query(i) == p + 1) {
a.push_back(i);
} else {
Query(i);
}
}
for (int i = 0; i < n; i++) {
Query(a[i]);
}
Merge(a, b);
}
