Submission #307717

#TimeUsernameProblemLanguageResultExecution timeMemory
307717urd05Finding Routers (IOI20_routers)C++14
77.74 / 100
2 ms776 KiB
#include "routers.h"
#include <bits/stdc++.h>
using namespace std;

int val[100001];

int func(int x) {
    if (val[x]!=-1) {
        return val[x];
    }
    return val[x]=use_detector(x);
}

vector<int> find_routers(int l, int n, int q) {
    memset(val,-1,sizeof(val));
    vector<int> ret(n);
    int st=0;
    vector<int> cut;
    for(int i=0;i<n-1;i++) {
        int lo=st;
        int hi=l;
        while (lo+1<hi) {
            int mid=(lo+hi)/2;
            if (func(mid)==i) {
                lo=mid;
            }
            else {
                hi=mid;
            }
        }
        cut.push_back(lo);
        st=hi;
    }
    ret[0]=0;
    for(int i=1;i<n;i++) {
        ret[i]=cut[i-1]+cut[i-1]-ret[i-1];
    }
	return ret;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...