Submission #1200924

#TimeUsernameProblemLanguageResultExecution timeMemory
1200924AlmontherFinding Routers (IOI20_routers)C++20
79.24 / 100
61 ms1352 KiB
#include<bits/stdc++.h>
#include "routers.h"
using namespace std;

#define ll long long
#define co cout<<
// stuff
// vector<int>points={0,2,6};
// ll use_detector(ll x){
//     ll mn=1e18,ans;
//     for(int i=0;i<points.size();i++){
//         ll dis=abs(x-points[i]);
//         if(dis<mn) mn=dis,ans=i;
//     }
//     return ans;
// }
std::vector<int> find_routers(int l, int n, int q){
    ll point=0,idx=0;
    ll ans[n+5]={};
    map<ll,ll>test;
    map<ll,ll>mp;
    for(int i=0;i<n-1;i++){
        ll mx=1e5+1;
        for(auto j:test) if(j.first>l&&j.second!=idx) mx=min(mx,j.second);
        ll l=mp[idx],r=mx-1;
        ll cnt=0;
        while(l<r){
            ll mid=(l+r+1)/2;
            if(test[mid]==0) test[mid]=use_detector(mid)+1,cnt++;
            mp[test[mid]-1]=max(mp[test[mid]-1],mid);
            if(test[mid]-1!=idx) r=mid-1;
            else l=mid;
        }
        point=(l-point)*2+point,idx=test[l+1]-1;
        ans[idx]=point;
    }
    vector<int>v;
    for(int i=0;i<n;i++) v.push_back(ans[i]);
    return v;
}
// int main(){
//     vector<int>v=find_routers(6, 3, 10);
//     for(auto i:v) co 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...