| # | Time | Username | Problem | Language | Result | Execution time | Memory | 
|---|---|---|---|---|---|---|---|
| 417495 | iulia2100 | Minerals (JOI19_minerals) | C++14 | 32 ms | 3652 KiB | 
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <vector>
#include "minerals.h"
using namespace std;
//ifstream cin ("idk.in");
//ofstream cout ("idk.out");
const int N = 96005;
int last_ans;
int q[N];
bool in_set[N];
vector <int> st, dr;
void solve(vector <int> v)  {
    if (v.size() == 2)  {
        Answer(v[0], v[1]);
        return;
    }
//    cout << v.size() << '\n';
    vector <int> aux_st, aux_dr;
    int nr = v.size() / 4, x = 0;
    for (auto it : v)   {
        if (x == nr && in_set[it])    {
            aux_dr.push_back(it);
        } else if (in_set[it]) {
            x = Query(it);
            q[it] ^= 1;
            aux_st.push_back(it);
        }
    }
    for (auto it : v)   {
        if (in_set[it])
            continue;
        if (aux_st.size() == nr + nr)   {
            aux_dr.push_back(it);
            continue;
        }
        if (aux_dr.size() == v.size() - nr - nr)    {
            aux_st.push_back(it);
            continue;
        }
        x = Query(it);
        q[it] ^= 1;
        if (x > nr) {
            x = Query(it);
            q[it] ^= 1;
            aux_dr.push_back(it);
        } else aux_st.push_back(it);
    }
    for (auto it : aux_st)  {
        if (q[it])  {
            Query(it);
            q[it] ^= 1;
        }
    }
    solve(aux_st);
    solve(aux_dr);
}
void find_index(int n)   {
    int last = 0;
    for (int i = 1; i <= n + n; ++i)    {
        int x = Query(i);
        last_ans = x;
        if (x == last)  {
            last_ans = Query(i);
            continue;
        }
        in_set[i] = true;
        last = x;
    }
    for (int i = 1; i <= n + n; ++i)    {
        if (!in_set[i]) {
            dr.push_back(i);
        } else    {
            st.push_back(i);
            Query(i);
        }
    }
}
void Solve(int n)   {
    find_index(n);
    vector <int> aux(0);
    for (int i = 1; i <= n + n; ++i)
        aux.push_back(i);
    solve(aux);
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output | 
|---|---|---|---|---|
| Fetching results... | ||||
