Submission #1356455

#TimeUsernameProblemLanguageResultExecution timeMemory
1356455toast12Finding Routers (IOI20_routers)C++20
100 / 100
1 ms580 KiB
#include "routers.h"
using namespace std;

vector<int> v;

int query(int x) {
    if (v[x] == -1) v[x] = use_detector(x);
    return v[x];
}

vector<int> find_routers(int l, int n, int q) {
    v.resize(l+1, -1);
    vector<int> ans(1);
    int prev = 0;
    for (int i = 1; i < n; i++) {
        int lo = 0, hi = l;
        while (lo < hi) {
            int mid = (lo+hi)/2;
            int res = query(mid);
            if (res >= i) hi = mid;
            else lo = mid+1;
        }
        int dist = hi-prev;
        ans.push_back(prev+2*dist-2);
        prev = ans.back();
    }
    return ans;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...