Submission #376813

#TimeUsernameProblemLanguageResultExecution timeMemory
3768132qbingxuanMinerals (JOI19_minerals)C++17
40 / 100
24 ms2152 KiB
#include "minerals.h"
#include <bits/stdc++.h>
using namespace std;

void dq(int l, int r, vector<int> cand) {
    // cerr << l << ' ' << r << ' ' << " cand = ";
    // for (int x: cand) cerr << x << ' ';
    // cerr << endl;
    // assert(r - l + 1 == cand.size());
    if (cand.empty()) return;
    if (l == r) {
        // cerr << "cand.size() = " << cand.size() << endl;
        Answer(cand[0], l);
        return;
    }
    int m = l+(r-l)/2;
    int cur = -1;
    for (int i = l; i <= m; i++)
        cur = Query(i);
    vector<int> L, R;
    for (int x: cand) {
        if (Query(x) == cur) {
            L.push_back(x);
        } else {
            R.push_back(x);
        }
        Query(x);
    }
    for (int i = l; i <= m; i++)
        Query(i);
    dq(l, m, L);
    dq(m+1, r, R);
}
int f(int n) {
    int dep = __lg(n) + 1;
    return n * 6 * dep;
}
void Solve(int N) {
    vector<int> cand;
    int cur = 0;
    for (int i = 1; i <= N*2; i++) {
        int q = Query(i);
        if (q == cur) {
            Query(i);
        } else {
            cand.push_back(i);
        }
        cur = q;
    }
    cerr << cand.size() << '\n';
    dq(1, N*2, cand);
    cerr << f(N) << '\n';
    // for (int i = 1; i <= 50; i++) cerr << i << ' ' << f(i) << endl;
    /*
    for (int i = 1; i <= N*2; i++) {
        Query(i);
        for (int j = 1; j < i; j++) {
            if (Query(j) == 1)
                Answer(i, j);
            Query(j);
        }
        Query(i);
    }
    */
}
#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...