아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

정수가 적힌 모자

시간 제한2초메모리 제한512 MB

요약
인접한 수의 차이에 대한 제약 b와 c가 주어질 때, 어떤 현자가 자신의 모자에 없는 수를 처음 알아내는 날을 구하고 끝나지 않으면 -1을 출력합니다.
난이도

어려움10점 중 9점

유형
배열, 구간, 시뮬레이션
정답자
아직 제출이 없습니다

문제

nn명의 현명한 사람이 있다. 각 사람은 모자를 쓰고 있고, 모자에는 정수가 적혀 있다. 각 사람은 다른 사람들의 모자에 적힌 수는 볼 수 있지만 자기 모자의 수는 볼 수 없다. aia_i는 ii번째 현명한 사람의 모자에 적힌 수를 나타낸다.

길이가 n−1n-1인 정수 배열 bb와 cc도 주어진다. 모자에 정수를 배정한 결과가 다음 조건 중 하나 이상을 만족하는 ii (단, 1≤i≤n−11 \le i \le n-1)가 적어도 하나 존재하면 이 배정을 유효하다고 한다.

  1. ai+1<ai+bia_{i+1} < a_i + b_i
  2. ai+1>ai+cia_{i+1} > a_i + c_i

현명한 사람들은 실제 배정, 즉 배열 aa가 유효하다는 것을 알고 있다.

다음 과정이 진행된다. 매일 첫 번째 사람부터 차례로 확인한다. 그날 시작할 때 ai≠xa_i \neq x인 정수 xx를 알고 있는 ii번째 현명한 사람이 있으면, 즉 자기 모자에 적히지 않았다고 확실히 아는 수가 있으면, 그 사람은 그날 끝에 이를 발표하고 과정이 끝난다. 그런 사람이 없으면 과정은 다음 날로 넘어가 같은 방식으로 이어진다.

과정이 끝나는지 판단하고, 끝난다면 그 날짜를 구하라.

입력

첫 줄에 현명한 사람의 수를 나타내는 정수 nn (2≤n≤1052 \le n \le 10^5)이 주어진다.

둘째 줄에 정수 aia_i (−1010≤ai≤1010-10^{10} \le a_i \le 10^{10})가 nn개 주어진다.

셋째 줄에 정수 bib_i (−1010≤bi≤1010-10^{10} \le b_i \le 10^{10})가 n−1n-1개 주어진다.

넷째 줄에 정수 cic_i (−1010≤ci≤1010-10^{10} \le c_i \le 10^{10})가 n−1n-1개 주어진다.

배열 aa가 유효하다는 것이 보장된다.

출력

과정이 끝나지 않으면 -1을 출력한다. 그렇지 않으면 과정이 끝나는 날짜를 출력한다.

힌트

첫 번째 예제를 보자. 배열 bb와 cc가 주는 제약은 "모든 정수가 같지는 않다"로 바꿔 쓸 수 있다.

첫째 날에는 어떤 현명한 사람도 자기 모자에 적히지 않은 수를 추론할 수 없다.

둘째 날에는 세 번째 현명한 사람이 다음을 안다. 자기 모자의 수가 2라면, 첫째 날 첫 번째 현명한 사람은 다른 두 사람의 모자에 모두 2가 적힌 것을 보고 자기 모자에 2가 없다는 것을 추론했을 것이다. 따라서 둘째 날 세 번째 현명한 사람은 자기 모자에 2가 적혀 있지 않다는 것을 안다.

이 설명은 읽기 쉬운가? 아마 아닐 것이다. 더 읽기 쉽게 쓸 수 있었을까? 아마 그렇지 못할 것이다.

예제4

  1. 예제 1

    입력
    3
    1 2 3
    0 0
    0 0
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2
    -1 -1
    1
    -1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    7
    1 4 2 -5 10000000000 6 -7
    -1 2 -3 4 6 5
    2 3 322 5 100 312
    
    예상 출력
    5
    
  4. 예제 4

    입력
    8
    3 2 8 25 16 24 24 24
    -1 0 3 4 -2 7 6
    -1 2 7 5 -1 12 11
    
    예상 출력
    4