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

문제 4640 · 바이트 III

두 장으로 정하는 여행 기간

인증 제출 통계 · 5분마다 갱신 · 정답 비율 = 정답 제출 / 전체 제출
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1000ms / 테스트 (언어별 보정은 아래 표)메모리: 측정하지 않음(브라우저 채점)0000.00%

문제

한 여행자는 출발 도시와 여행 도시를 왕복하는 항공권을 따로 구매하려 한다. 여행 도시로 가는 편도 항공권 후보는 N장이고, 출발 도시로 돌아오는 편도 항공권 후보는 M장이다. 가는 항공권은 입력 순서대로 1번부터 N번까지, 돌아오는 항공권은 별도로 1번부터 M번까지 번호를 붙인다. 여행자는 두 목록에서 각각 정확히 한 장씩 선택해야 한다. 각 항공권에는 이동하는 날짜와 가격이 적혀 있다. 날짜는 같은 기준일에서 센 양의 정수로 나타내며, 모든 항공편은 표시된 날짜 안에 출발하여 도착한다고 가정한다. 가는 항공권의 날짜를 a, 돌아오는 항공권의 날짜를 b라고 할 때 a < b여야 여행이 가능하다. 같은 날짜에 갔다가 돌아오는 조합은 허용하지 않는다. 여행 기간은 두 날짜의 차이인 b - a로 정의하며, 항공편의 구체적인 출발 시각이나 비행시간은 고려하지 않는다. 여행자가 항공권 구매에 사용할 수 있는 예산은 B다. 선택한 두 항공권의 가격 합이 B 이하여야 하며, 다른 비용은 계산하지 않는다. 가격 합이 예산과 정확히 같아도 선택할 수 있다. 모든 후보는 해당 방향의 같은 두 도시를 연결하므로 도시나 공항이 맞는지 추가로 확인할 필요는 없다. 서로 다른 번호의 항공권은 날짜와 가격이 같더라도 별개의 후보로 취급한다. 여행자는 가능한 조합 중 여행 기간이 가장 긴 조합을 고른다. 여행 기간이 같으면 두 항공권의 가격 합이 더 작은 조합을 고른다. 가격 합도 같으면 가는 항공권 번호가 더 작은 조합을 고르고, 그 번호까지 같으면 돌아오는 항공권 번호가 더 작은 조합을 고른다. 이 순서를 모두 적용하면 선택할 조합은 하나로 정해진다. 날짜 조건과 예산 조건을 함께 만족하는 조합이 없을 수도 있다. 두 항공권 목록과 예산이 주어질 때, 여행자가 선택할 항공권 번호와 여행 기간, 가격 합을 구하는 프로그램을 작성한다.

입력

첫째 줄에 정수 N, M, B가 공백으로 주어진다. 다음 N개 줄에 가는 항공권의 날짜 a_i와 가격 p_i가 주어진다. 그다음 M개 줄에 돌아오는 항공권의 날짜 b_j와 가격 q_j가 주어진다.
1 ≤ N, M ≤ 300, 1 ≤ B ≤ 2,000,000이다. 모든 날짜는 1 이상 365 이하의 정수이며 모든 가격은 1 이상 1,000,000 이하의 정수다. 각 목록은 날짜나 가격순으로 정렬되어 있지 않을 수 있다.

출력

가능한 조합이 있으면 가는 항공권 번호, 돌아오는 항공권 번호, 여행 기간, 두 항공권의 가격 합을 이 순서대로 공백으로 구분하여 한 줄에 출력한다. 문제에 제시된 순서대로 동점을 처리한다. 가능한 조합이 없으면 -1만 출력한다.

예제 입력 1

3 3 150
2 70
4 50
1 100
8 80
6 40
3 20

예제 출력 1

1 1 6 150

예제 입력 2

2 2 100
5 20
6 30
4 10
5 10

예제 출력 2

-1

예제 입력 3

2 2 90
2 40
2 40
7 30
7 30

예제 출력 3

1 1 5 70
힌트 펼치기
  • 가는 항공권 한 장과 돌아오는 항공권 한 장을 선택하는 모든 조합을 확인한다.

관련 서재 장

관련 장

출처: Devin.KR 자체 제작

알고리즘 분류완전 탐색구현

풀이 작성

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

Python 기본 시간 제한 = 문제 시간 제한 × 3 + 2초. 문제별 예외는 아래 표에 반영됩니다. 표준 라이브러리만 지원합니다.

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

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

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

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

    이 브라우저의 연습 기록

      언어별 제한

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

      언어엔진(버전)시간 제한메모리
      javascript사용자 브라우저 JavaScript 엔진 (버전은 브라우저에 따라 다름)1000ms / 테스트측정하지 않음(브라우저 채점)
      pythonPyodide 314.0.7 (CPython 3.14 WASM)5000ms / 테스트측정하지 않음(브라우저 채점)