# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1203654 | maya_s | Finding Routers (IOI20_routers) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
// static int l, n, q;
// static std::vector<int> p;
// static std::vector<int> answer;
// static int queries = 0;
// int use_detector(int x)
// {
// queries++;
// assert(x >= 0 && x <= l);
// std::vector<int>::iterator left, right;
// right = std::upper_bound(p.begin(), p.end(), x);
// left = std::prev(right);
// if (right == p.end()) {
// return n - 1;
// } else if ((x - *left) <= (*right - x)){
// return std::distance(p.begin(), left);
// } else {
// return std::distance(p.begin(), right);
// }
// }
std::vector<int> find_routers(int L, int N, int Q) {
ll last = 0;
vector<ll> ans = {0};
for(ll i = 1; i < L; i++) {
ll x = use_detector(i);
if(x != last) last = x, ans.push_back(2*(i-1));
}
return ans;
}
// int main()
// {
// assert(scanf("%d %d %d", &l, &n, &q) == 3);
// p.resize(n);
// for (int i = 0; i < n; i++) {
// assert(scanf("%d", &p[i]) == 1);
// if (i) {
// assert(p[i-1] < p[i]);
// }
// }
// fclose(stdin);
// answer = find_routers(l, n, q);
// assert((int) answer.size() == n);
// for (int i = 0; i < n; i++)
// {
// assert(answer[i] >= 0 && answer[i] <= l && answer[i] % 2 == 0);
// }
// for (int i = 0; i < n; i++)
// {
// if (i) printf(" ");
// printf("%d", answer[i]);
// }
// printf("\n");
// printf("%d\n", queries);
// }