지우너
[코드트리] 최소 통과 시간 C++ 본문
문제
코드
#include <iostream>
#include <algorithm>
using namespace std;
const int MAX_M = 100000;
int n, m;
int t[MAX_M];
bool IsPossible(long long time){
int cnt =0;// 물건의 개수
for(int i=0; i<m; ++i){
cnt+=time/t[i];
if(cnt>=n) return true;
}
return false;
}
int main() {
cin >> n >> m;
for(int i=0; i<m; ++i){
cin >> t[i];
}
sort(t,t+m);
long long left=1, right=t[m-1]*(long long)n, answer=t[m-1]*(long long)n;
while(left<=right){
long long mid = (left+right)/2;
if(IsPossible(mid)){
right=mid-1;
answer = mid;
}
else left=mid+1;
}
cout << answer << '\n';
return 0;
}
'Problem Solving' 카테고리의 다른 글
[코드트리] 격자 칠하기2 C++ (0) | 2024.08.31 |
---|---|
[코드트리] 번호표를 든 N명의 사람 C++ (0) | 2024.08.31 |
[코드트리] 이차원 배열의 오름차순 정리 C++ (0) | 2024.08.29 |
[코드트리] 정수 분배하기 C++ (0) | 2024.08.28 |
[코드트리] 선분 위의 점 C++ (0) | 2024.08.27 |