Submission #1258665

#TimeUsernameProblemLanguageResultExecution timeMemory
1258665tamzidFinding Routers (IOI20_routers)C++20
100 / 100
1 ms584 KiB
#include <bits/stdc++.h>
#include "routers.h"
using namespace std;
using ll = long long;

const int N = 1e5 + 5;
vector<int> memo(N, -1);

std::vector<int> find_routers(int l, int n, int q) {
    vector<int> answer;
    answer.push_back(0);
    int last = 0;
    for(int i=1;i<n;++i)
    {
      int low = 0, high = l, ans = 0;
      while(low <= high)
      {
        int mid = (low + high) / 2;
        int idx;
        if(memo[mid] != -1)
        {
          idx = memo[mid];
        }
        else
        {
          idx = use_detector(mid);
          memo[mid] = idx;
        }
        if(idx <= last)
        {
          low = mid + 1;
        }
        else
        {
          ans = mid;
          high = mid - 1;
        }
      }
      ++last;
      int dis = ans - answer.back();
      --dis;
      answer.push_back(answer.back() + (dis * 2));
    }
    return answer;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...