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

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

Desperate Fire Survive

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

요약
각 질의 [l, r, k]에서 노드를 합치고 삭제해 레벨이 정확히 k인 단일 노드가 되는 부분 구간의 개수를 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 그리디, 분할 정복
정답자
아직 제출이 없습니다

문제

Rikka는 콘테스트가 열리는 홀까지 자신의 모든 셀과 함께 달리고 있다.

EC Final은 점점 커지고 있다. 약한 2000W 메인 선에 연결되는 컴퓨터가 계속 늘어나서, 모든 행에 열이 쌓이고 있다.

Rikka가 홀에 들어서자 LCR이 자원봉사자들과 함께 선을 다시 배치하고 있었다. 하지만 그녀는 지켜보는 것 말고는 도울 수 없을지도 모른다.

"들어 봐. 새 회로의 매개변수를 계산할 시간이 없어. 자료구조 잘 알아? 제발 도와줘..."

회로는 nn개의 노드로 이루어진 수열이고, 노드의 레벨은 11부터 mm까지 총 mm종류가 있다. kk레벨 노드의 전력 한도는 (k−1)(k-1)레벨 노드의 두 배이므로, k<mk < m이면 Rikka는 인접한 kk레벨 노드 두 개를 (k+1)(k+1)레벨 노드 하나로 합칠 수 있다. 또한 회로에서 노드를 언제든지 제거할 수 있으며, 남은 노드들의 순서는 그대로 유지된다.

자원봉사자들은 총 qq개의 질의를 가지고 있다. 각 질의는 구간 [l,r][l,r]과 정수 레벨 kk로 주어진다. Rikka는 주어진 구간의 부분 구간 중에서 kk레벨 노드를 만들 수 있는 것의 개수를 세야 한다. 여기서 부분 구간은 l≤x≤y≤rl \le x \le y \le r을 만족하는 구간 [x,y][x, y]를 말한다. 구간 [x,y][x, y]가 kk레벨 노드를 만들 수 있다는 것은, 같은 레벨의 인접 노드를 합치는 연산과 노드를 제거하는 연산을 반복해서 수열 [x,y][x, y]를 하나의 kk레벨 노드로 바꿀 수 있다는 뜻이다. 두 연산은 임의의 순서로 몇 번이든 수행할 수 있다. 결과 레벨은 정확히 kk여야 하며, 더 높거나 낮아서는 안 된다.

입력

첫 줄에 세 정수 nn, mm, qq (1≤n,m,q≤2×1051 \le n, m, q \le 2 \times 10^5)가 주어진다. 각각 회로 수열의 길이, 최대 레벨, 질의의 개수이다.

둘째 줄에는 노드의 레벨을 순서대로 나타내는 정수 A1,A2,…,AnA_1, A_2, \dots, A_n (1≤Ai≤m1 \le A_i \le m)이 주어진다.

이어지는 qq개의 줄에는 각각 질의를 나타내는 세 정수 ll, rr, kk (1≤l≤r≤n1 \le l \le r \le n, 1≤k≤m1 \le k \le m)가 주어진다. 한 줄의 정수들은 공백으로 구분된다.

출력

qq개의 줄을 출력한다. 각 줄에는 해당 질의의 답을 정수 하나로 출력한다.

예제2

  1. 예제 1

    입력
    5 5 5
    1 1 1 1 1
    1 5 1
    1 5 2
    1 5 3
    1 5 4
    1 5 5
    
    예상 출력
    15
    10
    3
    0
    0
    
  2. 예제 2

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