Submission #1202714

#TimeUsernameProblemLanguageResultExecution timeMemory
1202714Ahmed_KaanicheMinerals (JOI19_minerals)C++20
40 / 100
16 ms4720 KiB
#include "minerals.h"
#include <bits/stdc++.h>

using namespace std;
#define ll long long
#define endl '\n'
#define fi first
#define se second
#define pb push_back

void devide(ll n, vector<ll> x, vector<ll> y) {
//    cout << n << endl;
    if (n == 1) {
//        cout << x[0] << ' ' << y[0] << endl;
        Answer(x[0], y[0]);
        return;
    }
    
    vector<ll> a, b, c, d;
    for (ll i = 0; i < n / 2; ++i) {
        Query(x[i]);
        a.pb(x[i]);
    }
    for (ll i = n / 2; i < n; ++i)
        b.pb(x[i]);
    
//    cout << "A" << endl;
//    for (ll i = 0; i < n / 2; ++i)
//        cout << a[i] << ' ';
//    cout << endl;
//    cout << "B" << endl;
//    for (ll i = 0; i < n / 2; ++i)
//        cout << b[i] << ' ';
//    cout << endl;
    
    for (ll i = 0; i < n; ++i) {
        ll curr = Query(y[i]);
        if (curr == n / 2)
            c.pb(y[i]);
        else
            d.pb(y[i]);
        Query(y[i]);
    }
    
//    cout << "C" << endl;
//    for (ll i = 0; i < n / 2; ++i)
//        cout << c[i] << ' ';
//    cout << endl;
//    cout << "D" << endl;
//    for (ll i = 0; i < n / 2; ++i)
//        cout << d[i] << ' ';
//    cout << endl;
    
    for (ll i = 0; i < n/2; ++i)
        Query(a[i]);
    
    devide(n / 2, a, c);
    devide(n - n / 2, b, d);
}

void Solve(int n) {
    vector<ll> x, y;
    ll curr, prev = 0;
    for (ll i = 1; i <= 2 * n; ++i) {
        curr = Query(i);
        if (curr == prev) {
            y.pb(i);
            Query(i);
        } else {
            x.pb(i);
            prev = curr;
        }
    }
    for (ll i = 0; i < n; ++i) {
        Query(x[i]);
    }
    devide(n, x, y);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...