제출 #347047

#제출 시각아이디문제언어결과실행 시간메모리
347047PetyFinding Routers (IOI20_routers)C++14
97.89 / 100
6 ms768 KiB
#include <bits/stdc++.h>
#include "routers.h"

using namespace std;

int answer[100002], lim[1002];
int ask (int x) {
  if (answer[x] != -1)
    return answer[x];
  return answer[x] = use_detector(x);
}

vector<int> find_routers (int l, int n, int q) {
  vector<int>p;
  p.resize(n);
  memset(answer, -1, sizeof(answer));
  for (int i = 1; i < n; i++)
    lim[i] = l;
  for (int i = 1; i < n; i++) {
    int st = p[i - 1], dr = lim[i], poz = 0;
    while (st <= dr) {
      int mij = (st + dr) / 2;
      int val = ask(mij);
      for (int j = 1; j < val; j++)
        lim[j] = min(lim[j], mij);
      if (ask(mij) == i - 1) {
        st = mij + 1;
        poz = mij;
      }
      else
        dr = mij - 1;
    }
    p[i] = p[i - 1] + 2* (poz - p[i - 1]);
  }
  return p;
}

/*int main () {
  return 0;
}*/

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...