티스토리 뷰

https://www.acmicpc.net/problem/2110

 

2110번: 공유기 설치

첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가

www.acmicpc.net

 

😑

도움이 된 테스트케이스

 

3 3
1
4
6

answer
2
2 2
6
5

answer
1

4 3
999999985
999999991
999999996
1000000000

answer
6

 

const fs = require('fs');
const [A,...B] = fs.readFileSync("./dev/stdin").toString().trim().split("\n");

const [_,router] = A.split(' ').map(v=>+v); 

let home=B.map(v=>+v).sort((a,b)=>a-b)
const tempmin = home[0];
home = home.map(v=>v-tempmin+1)
let min = home[0]
let mid = 0; 
let max = home[home.length-1]
let answer = 0;

let prev = home[0];  
while(min<=max){
  mid = Math.floor((min+max)/2);
  let cnt =1;
  prev=home[0];
  for(let i = 1; i<home.length; i++){
    if(home[i]>=prev+mid){
      cnt++;
      prev = home[i]
    }
  }
  if(cnt<router){
    max = mid-1;
  }else{
    min=mid+1;
    if(mid>answer)answer = mid;
  }
}
console.log(answer)
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함