제출 #424474

#제출 시각아이디문제언어결과실행 시간메모리
424474iraira655Finding Routers (IOI20_routers)C++17
44.35 / 100
2 ms296 KiB
#include "routers.h"
#include <iostream>
#include <vector>
//#include <chrono>

using namespace std;
 
vector<int> find_routers(int l, int n, int q) {
  //auto started = std::chrono::high_resolution_clock::now();

  vector<int> ans;
  ans.push_back(0);
  
  int prev = 0, check = 0, mid = 0, lo =0, hi = l, c =0;
  bool found = 0;
  
  for(int next=1; next<n; next++){
    lo = ans[next-1], hi = l;
    found =0;
    //int asd = 0;
    while(!found && lo<hi){
      //asd++;
      mid = lo + (hi-lo)/2;
      check = use_detector(mid);
      //cout<<lo<<" "<<hi<<" "<<mid<<" "<<check<<" "<<prev<<" "<<asd<<"\n";
      if(check == prev){
        c = use_detector(mid+1);
        if(c == next){
          ans.push_back(mid*2 - ans[next-1]);
          lo = mid+1;
          prev = next;
          found =1;
        }
        else{
          lo = mid;
        }
      }
      else{
          hi = mid;
        }
    }
  } 
  //auto done = std::chrono::high_resolution_clock::now();
  //std::cout <<"\nmls "<< std::chrono::duration_cast<std::chrono::milliseconds>(done-started).count()<<"\n";

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...