페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
2500
ms
메모리 제한
2048
MB
부다페스트 공항에서 포라스 호텔까지는 차선이 하나만 있는 일방통행 도로가 있다. 이 도로의 길이는 킬로미터이다.
IOI 2023 행사 기간 동안 대의 버스가 이 도로를 지난다. 버스는 부터 까지 번호가 붙는다. 버스 ()는 행사 시작 초 뒤에 공항을 떠날 계획이고 초 동안 킬로미터를 갈 수 있다. 버스 은 초 동안 킬로미터를 갈 수 있는 예비 버스이다. 이 버스가 공항을 떠나는 시간 는 아직 정해지지 않았다.
기본적으로 도로에서 추월은 허락되지 않지만 추월 장소에서는 추월이 가능하다. 부터 까지 번호가 붙은 개()의 추월 장소가 도로의 서로 다른 위치에 있다. 추월 장소 ()는 공항에서 도로를 따라 킬로미터 거리에 있다. 추월 장소들은 공항으로부터 거리의 증가순으로 정렬되어 있다. 즉, 각 에 대해 이다. 첫 번째 추월 장소는 공항이고 마지막 추월 장소는 호텔이다. 즉, 이고 이다.
각 버스는 앞서 가는 느린 버스를 따라잡지 못했으면 최대 속도로 움직이지만, 따라잡으면 다음 추월 장소에 도달할 때까지는 느린 버스의 속도로 함께 움직인다. 추월 장소에서 더 빠른 버스들이 더 느린 버스들을 추월할 것이다.
엄밀하게 이고 인 각 에 대해 버스 가 추월 장소 에 도착하는 시간(초) 는 다음과 같이 정의된다. 각 에 대해 로 두고 로 둔다. 인 각 에 대해 다음과 같이 정의한다.
버스 의 추월 장소 에의 도착 예정 시간(초) 는 버스 가 추월 장소 에 도착한 시간으로부터 최대 속도로 이동한 경우에 추월 장소 에 도착하는 시간으로 정의한다. 즉, 각 에 대해
로 두고,
로 둔다.
버스 가 추월 장소 에 도착하는 시간은 추월 장소 에서 버스 보다 앞서 도착했던 모든 버스의 도착 예정 시간과 버스 자신의 도착 예정 시간 중 최댓값이다. 엄밀하게 를 와, 이고 인 모든 의 최댓값으로 둔다.
IOI 운영진은 예비 버스(버스 )의 출발 시간을 결정하고 싶다. 당신의 작업은 운영진이 하는 개의 질문에 답하는 것이다. 질문은 다음과 같은 형식이다. 예비 버스가 공항을 떠나는 시간을 초로 가정할 때 예비 버스가 호텔에 도착하는 시간이 언제인가?
다음 함수들을 구현해야 한다.
void init(int L, int N, int64[] T, int[] W, int X, int M, int[] S)
arrival_time이 호출되기 전에 각 테스트 케이스에 대해 정확히 한 번만 호출된다.int64 arrival_time(int64 Y)
다음 호출들을 생각해 보자.
init(6, 4, [20, 10, 40, 0], [5, 20, 20, 30], 10, 4, [0, 1, 3, 6])
아직 출발 시간이 정해지지 않은 버스 를 무시하면 다음 표는 예비가 아닌 버스들의 각 추월 장소에서의 도착 예정 시간과 실제 도착 시간을 보여준다.
| 0 | 20 | 25 | 30 | 40 | 40 | 55 | 55 |
| 1 | 10 | 30 | 30 | 70 | 70 | 130 | 130 |
| 2 | 40 | 60 | 60 | 100 | 100 | 160 | 180 |
| 3 | 0 | 30 | 30 | 90 | 90 | 180 | 180 |
장소 에 도착하는 시간은 버스가 공항을 떠나기로 계획된 시간이다. 즉, 에 대해 이다.
추월 장소 의 도착 예정 시간과 실제 도착 시간은 다음과 같이 계산된다.
장소 의 도착 예정 시간:
장소 의 도착 시간:
arrival_time(0)버스 는 킬로미터를 움직이는 데 초가 걸리고 초에 공항을 떠나는 것으로 가정된다. 이 경우 다음 표는 각 버스의 도착 시간을 보여준다. 예비가 아닌 버스들의 도착 예정 시간과 실제 도착 시간의 유일한 변화는 이다.
| 0 | 20 | 25 | 30 | 40 | 40 | 55 | 60 |
| 1 | 10 | 30 | 30 | 70 | 70 | 130 | 130 |
| 2 | 40 | 60 | 60 | 100 | 100 | 160 | 180 |
| 3 | 0 | 30 | 30 | 90 | 90 | 180 | 180 |
| 4 | 0 | 10 | 10 | 30 | 30 | 60 | 60 |
버스 는 호텔에 초에 도착함을 알 수 있다. 따라서 이 함수는 을 리턴해야 한다.
arrival_time(50)버스 는 초에 공항을 떠나는 것으로 가정된다. 이 경우 예비가 아닌 버스들의 도착 시간은 첫 표와 비교해서 변화가 없다. 도착 시간은 다음 표와 같다.
| 0 | 20 | 25 | 30 | 40 | 40 | 55 | 55 |
| 1 | 10 | 30 | 30 | 70 | 70 | 130 | 130 |
| 2 | 40 | 60 | 60 | 100 | 100 | 160 | 180 |
| 3 | 0 | 30 | 30 | 90 | 90 | 180 | 180 |
| 4 | 50 | 60 | 60 | 80 | 90 | 120 | 130 |
버스 는 느린 버스 를 둘이 동시에 도착하는 추월 장소 에서 추월한다. 다음으로 버스 는 장소 과 장소 사이에서 버스 과 함께 움직이게 되어 버스 가 장소 에 도착하는 시간이 초에서 초로 바뀐다. 장소 를 떠난 후에 버스 는 호텔에 도착할 때까지 버스 과 함께 움직이게 된다. 버스 는 호텔에 초에 도착한다. 따라서 이 함수는 을 리턴해야 한다.
공항에서의 거리에 따라 각 버스가 도착하는 시간을 그래프로 그릴 수 있다. 축은 공항으로부터의 거리(킬로미터)를 나타내고 축은 시간(초)을 나타낸다. 세로 점선은 추월 장소를 표시한다. 버스 번호가 같이 적힌 서로 다른 실선은 네 대의 예비가 아닌 버스를 나타낸다. 검정 점선은 예비 버스를 나타낸다.
arrival_time(0):

arrival_time(50):

line 1: L N X M Q line 2: T[0] T[1] ... T[N - 1] line 3: W[0] W[1] ... W[N - 1] line 4: S[0] S[1] ... S[M - 1] line 5 + k (0 <= k < Q): 질문 k에 대한 Y
샘플 그레이더는 다음 형식으로 답을 출력한다.
line 1 + k (0 <= k < Q): 질문 k에 대한 arrival_time의 리턴값
6 4 10 4 2
20 10 40 0
5 20 20 30
0 1 3 6
0
50
60
130
International Olympiad in Informatics (IOI) 2023, official task package and official Korean statement.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.