# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1226076 | poat | Minerals (JOI19_minerals) | C++17 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "minerals.h"
#include "grader.cpp"
using namespace std;
void solve(vector<int> vec)
{
if(vec.empty())
return;
if(vec.size() == 2)
{
Answer(vec[0], vec[1]);
return;
}
vector<int> a, b;
for(int i = 0; i < vec.size() / 4; i++)
a.push_back(vec[i]);
for(int i = vec.size() / 4; i < vec.size() / 2; i++)
b.push_back(vec[i]);
int x;
for(auto i : a)
x = Query(i);
for(int i = vec.size() / 2; i < vec.size(); i++)
{
int y = Query(vec[i]);
if(x == y)
a.push_back(vec[i]);
else
b.push_back(vec[i]);
y = Query(vec[i]);
x = y;
}
for(auto i : a)
Query(i);
solve(a);
solve(b);
}
void Solve(int N)
{
int q = 0;
vector<int> a, b;
for(int i = 1; i <= N * 2; i++)
{
if(Query(i) > q)
{
a.push_back(i);
q++;
}
else
b.push_back(i);
}
for(int i = 1; i <= N * 2; i++)
Query(i);
for(auto i : b)
a.push_back(i);
solve(a);
}