# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1200497 | eyadooz | Finding Routers (IOI20_routers) | C++20 | 0 ms | 0 KiB |
#include "bits/stdc++.h"
#include "routers.h"
using namespace std;
// int use_detector(int x){
// if(x == 0) return 0;
// if(x == 1) return 0;
// if(x == 2) return 1;
// if(x == 3) return 1;
// if(x == 4) return 1;
// if(x == 5) return 2;
// if(x == 6) return 2;
// if(x == 7) return 2;
// if(x == 8) return 3;
// if(x == 9) return 3;
// if(x == 10) return 4;
// }
std::vector<int> find_routers(int len, int n, int q){
vector<int>p;
p.push_back(0);
int remember[100005];
memset(remember, -1, sizeof remember);
for(int i = 1; i < n; i++){
int l = p.back() + 1, r = len;
// cout << r << ' ';
while(l <= r){
int mid = (l + r) / 2;
if(remember[mid] == -1) remember[mid] = use_detector(mid);
if(remember[mid] < i) r = mid - 1;
else l = mid + 1, bst=mid;
}
l--;
p.push_back(l + (l - p.back()));
}
return p;
}
// signed main()
// {
// vector<int>ans = find_routers(10, 5, 0);
// for(int i : ans) cout << i << ' ';
// }