문제 3748 · 비트 I
항공권 예산을 넘긴 순간
| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 1000ms / 테스트 (언어별 보정은 아래 표) | 메모리: 측정하지 않음(브라우저 채점) | 0 | 0 | 0 | 0.00% |
문제
한 여행 준비 모임은 여러 사람이 사용할 항공권을 정해진 순서대로 구매했다. 모임의 회계 담당자는 구매가 모두 끝난 뒤 영수증을 차례대로 살펴보며 지출을 정리하려 한다. 항공권 구매에 배정된 예산은 B원이고, 영수증에는 각 항공권을 실제로 구매한 가격이 적혀 있다. 모든 가격은 세금과 수수료를 포함한 최종 금액이며, 추가로 계산할 할인이나 비용은 없다. 담당자가 확인하려는 값은 두 가지다. 첫 번째 값은 모든 항공권의 가격을 더한 총지출이다. 두 번째 값은 첫 번째 항공권부터 가격을 누적했을 때, 누적 지출이 예산 B원을 처음으로 초과한 항공권의 번호다. 항공권에는 구매 순서대로 1번부터 N번까지 번호를 붙인다. 누적 지출이 예산과 정확히 같아진 경우는 초과한 경우가 아니다. 영수증은 이미 끝난 구매의 기록이므로 예산을 초과한 항공권을 발견하더라도 나머지 영수증을 모두 계산해야 한다. 예산을 초과한 사실이 이후 항공권의 구매 여부나 가격을 바꾸지는 않는다. 또한 기록을 정리하는 동안 항공권을 취소하거나 환불받는 일은 없으며, 모든 항공권의 가격은 양의 정수다. 예산을 초과하는 시점이 여러 번 보이더라도 두 번째 값에는 가장 처음 초과한 항공권의 번호만 사용한다. 마지막 항공권까지 더한 뒤에도 예산을 초과하지 않았다면 두 번째 값은 0으로 정한다. 구매한 항공권이 한 장뿐인 경우에도 같은 기준을 적용한다. 예산과 구매 순서에 따른 항공권 가격이 주어질 때, 담당자가 확인하려는 두 값을 구하는 프로그램을 작성한다.
입력
첫째 줄에 정수 N과 B가 공백으로 주어진다. 1 ≤ N ≤ 1,000, 1 ≤ B ≤ 1,000,000,000이다. 둘째 줄에 구매 순서대로 항공권 가격 P_1, P_2, …, P_N이 공백으로 주어진다. 각 가격은 정수이며 1 ≤ P_i ≤ 1,000,000이다.
출력
첫째 줄에 총지출을 출력한다. 둘째 줄에 누적 지출이 예산을 처음 초과한 항공권의 번호를 출력한다. 예산을 초과하지 않았다면 0을 출력한다.
예제 입력 1
5 250 80 70 100 30 20
예제 출력 1
300 4
예제 입력 2
3 600 120 180 300
예제 출력 2
600 0
예제 입력 3
1 10 11
예제 출력 3
11 1
힌트 펼치기
- 누적 지출을 갱신하면서 처음으로 예산을 초과한 번호를 한 번만 기록한다.
관련 서재 장
알고리즘 분류
반복누적 합풀이 작성
연습 채점은 공개 테스트로 실행합니다. 인증 제출은 코드를 봉인한 뒤 새 입력을 실행하고 서버에서 출력을 대조하며 코드와 판정을 저장합니다.
풀이를 제출하면 여기에서 결과를 확인할 수 있습니다.
연습 기록은 이 브라우저에 최근 50개를 저장합니다. 인증 기록은 내 제출에서 확인하세요.
이 브라우저의 연습 기록
언어별 제한
테스트 케이스마다 새 전역에서 실행하며 준비 시간은 제외합니다. 시간 초과된 출력은 검사하지 않습니다. 브라우저·기기 성능에 따라 실행 시간이 달라집니다.
| 언어 | 엔진(버전) | 시간 제한 | 메모리 |
|---|---|---|---|
| javascript | 사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름) | 1000ms / 테스트 | 측정하지 않음(브라우저 채점) |
| python | Pyodide 314.0.7 (CPython 3.14 WASM) | 5000ms / 테스트 | 측정하지 않음(브라우저 채점) |