본문으로 이동
코드패스 by Devin.KR

문제 4690 · 킬로 V

가동 준비가 다른 생산 라인

댓글 0
인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms측정하지 않음0000.00%

문제

한 공장은 같은 부품을 만드는 생산 라인 N개를 갖추고 있다. 새 주문을 받은 공장은 시각 0에 모든 생산 라인의 가동 준비를 동시에 시작한다. 생산 라인마다 준비에 걸리는 시간과 부품 하나를 만드는 시간이 다르다. 공장은 완성된 부품을 하나의 보관 구역에 모으며, 주문에 필요한 부품 K개가 모두 모이는 가장 이른 시각을 알아내려고 한다. i번 생산 라인의 준비 시간은 S_i이고 부품 하나의 생산 시간은 T_i다. 이 라인은 시각 S_i에 준비를 마치고 즉시 첫 부품의 생산을 시작한다. 첫 부품은 시각 S_i+T_i에 완성된다. 이후에는 쉬지 않고 다음 부품을 생산하므로 두 번째 부품은 시각 S_i+2T_i에, 세 번째 부품은 시각 S_i+3T_i에 완성된다. 준비가 끝났다는 이유만으로 완성된 부품이 생기는 것은 아니다. 각 생산 라인은 다른 라인과 독립적으로 작동한다. 한 라인에서 준비나 생산을 하는 동안 다른 라인도 동시에 준비하거나 생산할 수 있다. 라인 사이에 작업을 옮기거나 준비 시간을 줄이는 일은 없다. 완성된 부품은 즉시 보관 구역에 들어가며 운반 시간은 따로 필요하지 않다. 부품을 만드는 도중에는 그 부품을 완성 수량에 포함하지 않는다. 어떤 시각에 여러 라인에서 부품이 동시에 완성되면 그 부품들은 모두 해당 시각의 완성 수량에 포함한다. 주문 수량을 넘겨 생산해도 되므로, 한 시각에 부품 수가 K개를 초과하더라도 문제가 되지 않는다. 예를 들어 필요한 마지막 두 부품이 같은 시각에 완성되면 그 시각에 주문 수량을 확보한 것이다. 모든 시간은 시각 0을 기준으로 하는 정수 단위다. 각 라인의 준비 시간과 생산 시간이 주어질 때, 완성된 부품의 총수가 처음으로 K개 이상이 되는 정수 시각을 구한다. 생산 라인은 적어도 하나이고 생산 시간은 양수이므로 답은 항상 존재한다. 여러 라인이 마지막 부품을 함께 완성하더라도 라인 번호를 고를 필요 없이 시각만 출력한다.

입력

첫째 줄에 정수 N과 K가 공백으로 구분되어 주어진다. 다음 N개 줄의 i번째 줄에 정수 S_i와 T_i가 공백으로 구분되어 주어진다.
1 ≤ N ≤ 20,000, 1 ≤ K ≤ 1,000,000,000이다. 모든 i에 대해 0 ≤ S_i ≤ 1,000,000, 1 ≤ T_i ≤ 1,000,000이다.

출력

완성된 부품의 총수가 처음으로 K개 이상이 되는 정수 시각을 출력한다.

예제 입력 1

3 7
0 4
3 2
8 1

예제 출력 1

10

예제 입력 2

2 1
5 3
0 10

예제 출력 2

8

예제 입력 3

1 1000000000
1000000 1000000

예제 출력 3

1000000001000000
힌트 펼치기
  • 시각 X까지 완성되는 부품 수를 각 생산 라인에 대해 계산한다.
  • 어떤 시각에 주문 수량을 확보할 수 있다면 그 이후의 모든 시각에도 확보할 수 있다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류이분 탐색매개변수 탐색

풀이 작성

연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.

JavaScript 시간 제한 = 문제 시간 제한 × 1 + 0초. 문제별 예외는 아래 표에 반영됩니다.

Node.js 전체 API는 지원하지 않습니다.

Ctrl+Enter: 연습 채점 · Tab: 들여쓰기 · Esc 후 Tab: 다음 요소로 이동. 언어별 초안은 이 브라우저에 저장됩니다. JavaScript 입력: require('fs').readFileSync(0, 'utf8'), readline 또는 input().

로그인하면 인증 제출을 사용할 수 있습니다.

풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.

    연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.

    이 브라우저의 연습 기록

      댓글 0

      로그인하면 댓글을 쓸 수 있습니다.

      댓글 접기·펼치기

      언어별 제한

      테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.

      언어엔진(버전)시간 제한메모리
      JavaScript브라우저 JavaScript1000ms / 테스트측정하지 않음
      TypeScriptTypeScript 5.9.31000ms / 테스트측정하지 않음
      Python 3Pyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음
      CYoWASP Clang 222000ms / 테스트측정하지 않음
      C++YoWASP Clang 22 / libc++2000ms / 테스트측정하지 않음
      JavaOpenJDK javac + TeaVM (Java 21 문법)3000ms / 테스트측정하지 않음
      LuaWasmoon 1.16.0 / Lua 5.43000ms / 테스트측정하지 않음
      RubyRuby 3.4 / ruby.wasm 2.10.15000ms / 테스트측정하지 않음
      SchemeBiwaScheme 0.8.35000ms / 테스트측정하지 않음
      PrologSWI-Prolog / swipl-wasm 8.2.55000ms / 테스트측정하지 않음
      PerlPerl 5.28 / WebPerl 0.09-beta5000ms / 테스트측정하지 않음