# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1226612 | ssafarov | Minerals (JOI19_minerals) | C++20 | 0 ms | 0 KiB |
#define Magic ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include "minerals.h"
#define ll int
#define ld long long double
#define en '\n'
#define tsts int tetss; cin >> tetss; while(tetss--)
#define all(a) a.begin() , a.end()
#define pb push_back
#define ld long long double
#define fi first
#define se second
int lst;
int op[100000] = {};
void func(vector<int> v, bool ok){
vector<int> v1, v2;
int st = lst;
int gps = v.size() / 2;
if(v.size() == 2){
Answer(v[0], v[1]);
return;
}
if(ok){
int sb = (gps + 1) / 2;
for(auto g : v){
int nw = Query(g);
if(nw == lst){
if(sb){
sb--;
v1.push_back(g);
}
else{
nw = Query(g);
v2.push_back(g);
}
}else{
v1.push_back(g);
}
lst = nw;
}
}else{
int sb = (gps + 1) / 2;
for(auto g : v){
int nw = Query(g);
if((nw - st) > sb){
nw = Query(g);
v2.push_back(g);
}else{
v1.push_back(g);
}
lst = nw;
}
}
// if(ok == 1){
// return;
// }
func(v1, !ok);
func(v2, ok);
}
void Solve(int n){
vector<int> v;
for(int i = 1; i <= 2 * n; ++i){
v.push_back(i);
}
func(v, 0);
}