조용히 완전히 영원히

시간 제한1초메모리 제한1024 MB

요약
수열에 구간 chmin 갱신을 차례로 적용하면서, 각 갱신 직후 이후 어떤 갱신으로도 값이 바뀌지 않을 원소의 개수를 구한다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 정렬, 누적 합, 구현
정답자
아직 제출이 없습니다

문제

세종이는 다음과 같은 문제를 풀고 있다.

길이가 NN인 수열 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots ,A\_N이 주어진다. 이때 다음과 같은 업데이트가 총 QQ개 주어진다.

  • L R x: 모든 L≤i≤RL\leq i\leq R에 대해 A_i=min⁡(A_i,x)A\_i=\min(A\_i,x) 를 적용한다. (1≤L≤R≤N; 0≤x≤1,000,000)(1\leq L\leq R\leq N;\ 0\leq x\leq 1\\,000\\,000)

QQ개의 업데이트를 차례대로 수행한 후의 수열을 구하시오.

세종이는 어떤 업데이트 이후로 더 이상 값이 변경되지 않는 원소가 생김을 발견했다. 감성적인 세종이는 이런 원소를 잊힌 원소라고 이름 짓고 이들의 개수를 기억하기로 했다. 구체적으로, 어떤 원소가 ii번째 업데이트를 처리한 후 남은 업데이트에 의해 값이 변경되지 않는다면 그 원소는 ii-잊힌 원소가 된다. 임의의 두 양의 정수 i\<ji\<j에 대해, 모든 ii-잊힌 원소는 jj-잊힌 원소이기도 함에 유의하라.

세종이가 구해야 하는 수열과 각 업데이트 후의 잊힌 원소의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수열의 크기를 나타내는 정수 NN이 주어진다. (1≤N≤100,000)(1\leq N\leq 100\\,000)

둘째 줄에 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots ,A\_N이 공백으로 구분되어 주어진다. (0≤A_i≤1,000,000)(0\leq A\_i\leq 1\\, 000\\, 000)

셋째 줄에 업데이트의 수를 나타내는 정수 QQ가 주어진다. (1≤Q≤100,000)(1\leq Q\leq 100\\,000)

넷째 줄부터 QQ개의 줄에 걸쳐 업데이트가 한 줄에 하나씩 처리해야 하는 순서대로 주어진다.

출력

첫째 줄에 업데이트를 모두 수행한 후의 수열을 공백으로 구분해 출력한다.

둘째 줄에 QQ개의 정수 D_1,D_2,⋯ ,D_QD\_1,D\_2,\cdots ,D\_Q를 공백으로 구분해 출력한다. 이때 D_iD\_i는 ii-잊힌 원소의 개수다.

예제1

  1. 예제 1

    입력
    10
    10 5 6 9 2 4 7 1 8 3
    5
    1 2 8
    2 4 6
    5 9 4
    8 10 1
    3 6 7
    
    예상 출력
    8 5 6 6 2 4 4 1 1 1
    6 7 8 10 10