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

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

진실을 말하는 사람

시간 제한3.5초메모리 제한256 MB

요약
각 사람이 진실을 말하는 사람 수의 범위를 말할 때, Q번의 갱신 각각에 대해 가능한 최대 진실을 말하는 사람 수를 구한다.
난이도

어려움10점 중 8점

유형
배열, 세그먼트 트리, 그리디, 구현
정답자
아직 제출이 없습니다

문제

도시에 NN명의 사람들이 살고 있다. 이 중 일부는 참말쟁이이고, 나머지는 거짓말쟁이이다. 참말쟁이들은 항상 옳은 말만 하지만, 거짓말쟁이들은 옳은 말이든 거짓말이든 아무 말이나 한다.

모든 사람들에게 참말쟁이가 이 도시에 몇 명 있는지 물었다. ii번째 사람은 참말쟁이가 AiA_i명 이상 BiB_i명 이하라고 대답하였다. 이 증언들을 바탕으로 가능한 참말쟁이의 최대 명수를 구하여라.

그런데 문제가 생겼다. 사람들의 기억력이 그리 좋지 않다. QQ번 한 사람의 증언이 바뀌며, ii번째로 증언이 바뀔 때에는 PiP_i번 사람의 증언이 "참말쟁이가 LiL_i명 이상, RiR_i명 이하이다."로 바뀐다.

초기 상태를 포함한 Q+1Q+1번의 상황 각각에 대해 참말쟁이의 최대 명수를 구하여라.

입력

첫 줄에 NN이 주어진다. (1≤N≤5×1051 \le N \le 5 \times 10^5)

NN개의 줄에 걸쳐 AiA_i와 BiB_i가 순서대로 주어진다. (0≤Ai≤Bi≤N0 \le A_i \le B_i \le N)

다음 줄에 QQ가 주어진다. (1≤Q≤5×1051 \le Q \le 5 \times 10^5)

QQ개의 줄에 걸쳐 PiP_i, LiL_i, RiR_i가 순서대로 주어진다. (1≤Pi≤N1 \le P_i \le N, 0≤Li≤Ri≤N0 \le L_i \le R_i \le N)

출력

Q+1Q+1번의 상황 각각에 대해 참말쟁이의 최대 명수를 공백으로 구분하여 순서대로 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    3
    0 3
    0 3
    0 3
    6
    1 1 2
    2 1 2
    3 1 2
    1 0 0
    2 0 0
    3 0 0
    
    예상 출력
    3 2 2 2 2 1 0