QOJ.ac

QOJ

Time Limit: 1 s Memory Limit: 256 MB Total points: 100

#1396. 버스

Statistics

대학생인 JOI는 버스를 타고 대학교에 통학합니다. JOI의 집과 그가 다니는 대학교는 모두 IOI 시 안에 있습니다. IOI 시에는 1부터 $N$까지 번호가 매겨진 $N$개의 버스 정류장이 있습니다. JOI의 집에서 가장 가까운 버스 정류장은 버스 정류장 1이고, 대학교에서 가장 가까운 버스 정류장은 버스 정류장 $N$입니다.

IOI 시에는 $M$대의 버스가 운행됩니다. 각 버스는 하루에 한 번, 정해진 버스 정류장에서 정해진 시각에 출발하여 정해진 버스 정류장에 정해진 시각에 도착합니다. 날짜를 넘겨서 운행하는 버스는 없습니다. JOI는 지정된 정류장 외의 장소에서는 버스에 타거나 내릴 수 없습니다.

매일 JOI는 한 대 이상의 버스를 타고 대학교에 통학합니다. JOI가 버스 간에 환승하는 데 걸리는 시간은 무시할 수 있다고 가정합니다. 즉, 어떤 버스 정류장에서 어떤 시각에 출발하는 버스로 환승하려면, 그 버스의 출발 시각 또는 그 이전에 해당 버스 정류장에 도착해 있기만 하면 됩니다. 또한 같은 버스 정류장을 여러 번 이용할 수도 있습니다.

이러한 조건에서 JOI는 수업 시간에 맞춰 대학교에 도착하려면 집에서 언제 출발해야 하는지 알고 싶어 합니다. 하지만 대학교에서 하루의 첫 수업이 시작하는 시각은 날마다 다릅니다. 주어진 $Q$일 동안, 그날 수업 시간에 맞추기 위해 버스 정류장 $N$에 몇 시까지 도착해야 하는지가 알려져 있습니다. 이 날들 각각에 대해, 수업 시간에 맞추려면 JOI는 늦어도 몇 시까지 버스 정류장 1에 도착해야 할까요?

과제

버스 운행에 대한 정보가 주어집니다. 또한 $Q$일 동안 버스 정류장 $N$에 도착해야 하는 시각이 주어집니다. 각 날에 대해 JOI가 버스 정류장 1에 도착해야 하는 가장 늦은 시각을 구하세요.

입력

표준 입력에서 다음 데이터를 읽으세요:

  • 첫 번째 줄에는 공백으로 구분된 두 정수 $N$과 $M$이 주어지며, 이는 IOI 시에 $N$개의 버스 정류장과 $M$대의 버스가 있음을 나타냅니다.
  • 다음 $M$개의 줄 중 $i$번째 줄($1 \le i \le M$)에는 공백으로 구분된 네 정수 $A_i, B_i, X_i, Y_i$ ($1 \le A_i \le N, 1 \le B_i \le N, A_i \neq B_i$)가 주어집니다. 이는 $i$번째 버스가 시각 $X_i$에 버스 정류장 $A_i$에서 출발하여 시각 $Y_i$에 버스 정류장 $B_i$에 도착함을 의미합니다. 단, 시각은 오전 0시 00분부터 경과한 시간을 밀리초 단위로 나타낸 것입니다.
  • 다음 줄에는 버스 정류장 $N$의 도착 시각이 주어지는 날의 수를 나타내는 정수 $Q$가 주어집니다.
  • 다음 $Q$개의 줄 중 $j$번째 줄($1 \le j \le Q$)에는 정수 $L_j$가 주어지며, 이는 $j$번째 날에 시각 $L_j$까지 버스 정류장 $N$에 도착해야 함을 나타냅니다.

출력

표준 출력으로 $Q$개의 줄을 출력하세요. $j$번째 줄($1 \le j \le Q$)에는 $j$번째 날에 JOI가 버스 정류장 1에 도착해야 하는 가장 늦은 시각을 나타내는 정수를 출력해야 합니다. 만약 수업 시간에 맞춰 대학교에 도착하는 것이 불가능하다면 -1을 출력하세요.

제한

모든 입력 데이터는 다음 조건을 만족합니다:

  • $2 \le N \le 100\,000$.
  • $1 \le M \le 300\,000$.
  • $0 \le X_i < Y_i < 86\,400\,000$ ($= 24 \times 60 \times 60 \times 1000$) ($1 \le i \le M$).
  • $1 \le Q \le 100\,000$.
  • $0 \le L_j < 86\,400\,000$ ($= 24 \times 60 \times 60 \times 1000$) ($1 \le j \le Q$).

서브태스크

서브태스크 1 [20점]

다음 조건을 만족합니다: $N \le 2\,000$. $M \le 2\,000$. * $Q = 1$.

서브태스크 2 [15점]

다음 조건을 만족합니다: $N \le 2\,000$. $M \le 2\,000$.

서브태스크 3 [15점]

  • $Q = 1$을 만족합니다.

서브태스크 4 [50점]

추가 제한이 없습니다.

예제

입력 1

5 6
1 2 10 25
1 2 12 30
2 5 26 50
1 5 5 20
1 4 30 40
4 5 50 70
4
10
30
60
100

출력 1

-1
5
10
30

참고

시각 10까지 버스 정류장 5에 도착하는 것은 불가능합니다. 시각 30까지 도착하려면 시각 5에 4번째 버스를 타면 됩니다. 시각 60까지 도착하려면 다음과 같이 할 수 있습니다: 시각 10에 1번째 버스에 탑승합니다. 시각 25에 버스 정류장 2에 도착하여 1밀리초를 기다린 후 3번째 버스에 탑승합니다. 시각 50에 버스 정류장 5에 도착합니다. 시각 100까지 도착하려면 다음과 같이 할 수 있습니다: 시각 30에 5번째 버스에 탑승합니다. 시각 40에 버스 정류장 4에 도착하여 10밀리초를 기다린 후 6번째 버스에 탑승합니다. 시각 70에 버스 정류장 5에 도착합니다.

입력 2

3 8
1 2 1 5
1 3 0 1
1 3 2 8
2 3 2 3
2 3 3 4
2 3 4 5
2 3 5 6
2 3 6 7
6
3
4
5
6
7
8

출력 2

0
0
0
1
1
2

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.