두 대의 공작기계
면접 대비시간 제한1초메모리 제한512 MB
두 기계의 가동 준비 시간과 분당 생산량이 주어질 때, 기술자 한 명이 한 번에 한 기계만 준비하는 조건에서 k분 동안 만들 수 있는 부품의 최대 개수를 구합니다.
문제
공장에 기계가 두 대 있다. 오늘 근무 시간인 분 동안 가능한 한 많은 부품을 만들어야 한다.
두 기계는 모두 가동 전 상태다. 첫 번째 기계는 가동하는 데 분이 걸리고, 가동이 끝나면 분당 개의 부품을 만든다. 두 번째 기계는 가동하는 데 분이 걸리고, 가동이 끝나면 분당 개의 부품을 만든다.
기계를 가동하려면 기술자가 있어야 하므로 두 기계를 동시에 가동할 수는 없다. 한 기계를 가동하는 동안 다른 기계로 부품을 만드는 것은 가능하고, 두 기계가 동시에 부품을 만드는 것도 허용된다.
분 동안 만들 수 있는 부품의 최대 개수를 구하라.
입력
첫 줄에 근무 시간을 분 단위로 나타내는 정수 가 하나 주어진다 ().
둘째 줄에 음이 아닌 정수 와 가 주어진다 (). 는 첫 번째 기계를 가동하는 데 걸리는 시간이고, 는 그 기계가 1분 동안 만드는 부품 수다.
셋째 줄에 음이 아닌 정수 와 가 주어진다 (). 는 두 번째 기계를 가동하는 데 걸리는 시간이고, 는 그 기계가 1분 동안 만드는 부품 수다.
출력
근무 시간 동안 만들 수 있는 부품의 최대 개수를 정수 하나로 출력한다.
답은 32비트 정수 범위를 넘을 수 있으므로 C++에서는 long long, Pascal에서는 int64와 같은 64비트 정수형을 사용하는 것이 좋다.
힌트
이 예제에서는 두 번째 기계를 먼저 가동한 뒤 남은 15분 동안 45개의 부품을 만드는 것이 유리하다. 그다음 첫 번째 기계를 가동하고 남은 5분 동안 20개를 더 만든다.
첫 번째 기계를 먼저 가동하고 남은 10분 동안 40개를 만들면, 두 번째 기계를 가동한 뒤에는 15개만 만들 수 있다. 합계는 55개로 65개보다 적다.