알고리즘/BOJ

백준 3079번 입국심사

꾸준함. 2020. 3. 8. 21:51

문제 링크입니다: https://www.acmicpc.net/problem/3079

 

3079번: 입국심사

문제 상근이와 친구들은 오스트레일리아로 여행을 떠났다. 상근이와 친구들은 총 M명이고, 지금 공항에서 한 줄로 서서 입국심사를 기다리고 있다. 입국심사대는 총 N개가 있다. 각 입국심사관이 심사를 하는데 걸리는 시간은 사람마다 모두 다르다. k번 심사대에 앉아있는 심사관이 한 명을 심사를 하는데 드는 시간은 Tk이다. 가장 처음에 모든 심사대는 비어있고, 심사를 할 준비를 모두 끝냈다. 상근이와 친구들은 비행기 하나를 전세내고 놀러갔기 때문에, 지금 심사

www.acmicpc.net

 

재채점 결과 틀렸습니다가 나와서 다시 풀었습니다.

high를 (주어진 심사 시간 중 최대) * (상근이의 친구들)로 잡아준 뒤 이분탐색을 진행해야 오버플로우를 방지할 수 있습니다.

 

#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 1e5;
long long times[MAX];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
long long N, M;
cin >> N >> M;
for (int i = 0; i < N; i++)
{
cin >> times[i];
}
sort(times, times + N);
long long low = 0, high = M * times[N - 1];
long long result = M * times[N - 1];
while (low <= high)
{
long long mid = (low + high) / 2;
long long sum = 0;
for (int i = 0; i < N; i++)
{
sum += mid / times[i];
}
if (sum >= M)
{
result = min(result, mid);
high = mid - 1;
}
else
{
low = mid + 1;
}
}
cout << result << "\n";
return 0;
}
view raw .cpp hosted with ❤ by GitHub

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

'알고리즘 > BOJ' 카테고리의 다른 글

백준 6198번 옥상 정원 꾸미기  (0) 2020.03.08
백준 11978번 Mowing the Field (Bronze)  (0) 2020.03.08
백준 10868번 최솟값  (0) 2020.03.08
백준 1043번 거짓말  (0) 2020.03.05
백준 11328번 Strfry  (0) 2020.03.02