Submission #1203017

#TimeUsernameProblemLanguageResultExecution timeMemory
1203017DeltaStructFinding Routers (IOI20_routers)C++20
100 / 100
2 ms328 KiB
#include <bits/stdc++.h>
using namespace std;
#include "routers.h"

std::vector<int> find_routers(int l, int n, int q){
  vector<int> A(n),L(n-1),R(n-1,l);
  while(true){
    map<int,int> M; for (int i(0);i < n-1;++i) if (R[i]-L[i]>1) M[(L[i]+R[i])/2] = -1;
    //for (int i(0);i < n-1;++i) cout << i << ' ' << L[i] << ' ' << R[i] << endl;
    if (M.empty()) break;
    for (auto& [a,b]:M) b = use_detector(a);
    for (int i(0);i < n-1;++i) if (R[i]-L[i]>1){
      if (M[(L[i]+R[i])/2]<=i) L[i] = (L[i]+R[i])/2;
      else R[i] = (L[i]+R[i])/2;
    }
  }
  for (int i(1);i < n;++i) A[i] = 2*L[i-1]-A[i-1];
  return A;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...