Submission #1038622

#TimeUsernameProblemLanguageResultExecution timeMemory
1038622eysbutnoFinding Routers (IOI20_routers)C++17
100 / 100
3 ms724 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using pii = array<int, 2>;
#define all(x) begin(x), end(x)
#define sz(x) (int) (x).size()

#include "routers.h"

vector<int> find_routers(int l, int n, int q) {
    vector<int> res(n), lb(n);
    set<pii> seen;
    for (int i = 1; i < n; i++) {
        int lo = max(res[i - 1] + 1, lb[i - 1]);
        int hi = l - 1;
        auto it = seen.lower_bound({i, -1});
        if (it != end(seen)) {
            hi = (*it)[1] - 1;
        }
        while (lo < hi) {
            int mi = (lo + hi + 1) / 2;
            int x = use_detector(mi);
            lb[x] = max(lb[x], mi);
            seen.insert({x, mi});
            (x == i - 1) ? lo = mi : hi = mi - 1;
        }
        res[i] = res[i - 1] + 2 * (lo - res[i - 1]);
    }
    return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...