Submission #1200451

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

using namespace std;

vector<array<int, 2>> X;

void solve(int A, int B, int L, int R)
{
  if (A == B)
  {
    X.push_back({L, R});
    return;
  }
  int C = (A + B) / 2;
  int l = L, r = R;
  while (l < r)
  {
    int mid = (l + r + 1) >> 1;
    if (use_detector(mid) > C) r = mid - 1;
    else l = mid;
  }
  solve(A, C, L, l);
  solve(C + 1, B, l + 1, R);
}

vector<int> find_routers(int L, int n, int q) 
{
  X.clear();
  solve(0, n - 1, 0, L);
  sort(X.begin(), X.end());
  assert(X.size() == n);
  vector<int> res = {0};
  for (int i = 1; i < n; i++)
  {
    int d = X[i - 1][1] - res[i - 1];
    res.push_back(res[i - 1] + d * 2);
  }
  return res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...