Submission #1201581

#TimeUsernameProblemLanguageResultExecution timeMemory
1201581steveonalexFinding Routers (IOI20_routers)C++20
100 / 100
1 ms328 KiB
#include "routers.h"
#include <bits/stdc++.h>

using namespace std;

//int use_detector(int x){
//    cout << x << endl;
//    int ans; cin >> ans;
//    return ans;
//}

void dnc(int l, int r, int u, int v, vector<int> &cutting_points){
    if (l > r) return;
    if (u == v) {
        cutting_points[v] = max(cutting_points[v], r);
        return;
    }
    int mid = (l + r) / 2;
    int belonging = use_detector(mid);
    cutting_points[belonging] = max(cutting_points[belonging], mid);
    dnc(l, mid - 1, u, belonging, cutting_points);
    dnc(mid+1, r, belonging, v, cutting_points);
}

vector<int> find_routers(int l, int n, int q){
    vector<int> p(n);
    vector<int> cutting_points(n);
    dnc(0, l, 0, n-1, cutting_points);
    for(int i = 1; i < n; ++i){
        int L = cutting_points[i-1];
        p[i] = p[i-1] + 2 * (L - p[i-1]);
    }

    return p;
}

//int main(void){
//    ios::sync_with_stdio(0); cin.tie(0);
//
//    vector<int> ans = find_routers(5, 2, 10);
//    for(int i: ans) cout << i << " ";
//    cout << "\n";
//
//    return 0;
//}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...