본문 바로가기
온라인저지

[BOJ] 1654번: 랜선 자르기

by plzfday 2018. 8. 9.

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

랜선 하나의 길이를 이분탐색하자.

#include <cstdio>
#include <algorithm>
using namespace std;

int k, n, lan[1000001], Max = -987654321;

int main()
{
    scanf("%d %d", &k, &n);
    for (int i = 0; i < k; ++i) {
        scanf("%d", lan + i);
        Max = max(Max, lan[i]);
    }

    long long s = 1, f = Max, ans = 0; 
    long long mid = 1;
    while (s <= f)
    {
        mid = (s + f) >> 1;
        int cnt = 0;
        for (int i = 0; i < k; ++i) cnt += (lan[i] / mid);
        if (cnt >= n) ans = mid, s = mid + 1;
        else f = mid - 1;
    }
    printf("%lld", ans);
    return 0;
}

 

'온라인저지' 카테고리의 다른 글

[BOJ] 1699번: 제곱수의 합  (0) 2018.08.30
[BOJ] 9465번: 스티커  (0) 2018.08.30
[BOJ] 1976번: 여행 가자  (0) 2018.08.11
[BOJ] 2805번: 나무 자르기  (0) 2018.08.09
[BOJ] 10815번: 숫자 카드  (0) 2018.08.09
[BOJ] 1162번: 도로포장  (0) 2018.08.07

댓글