만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

키가 비슷한 친구

면접 대비

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

요약
각 사람에 대해 자기 왼쪽(또는 자기 자신)에 있으면서 키가 A_i-K 이상 A_i 이하인 가장 먼 사람을 찾고, 그 거리들의 합을 구합니다.
난이도

보통10점 중 4점

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

문제

NN명의 사람들이 한 줄로 서 있다. 각 사람은 왼쪽에서 오른쪽으로 순서대로 1,2,…,N1, 2, \ldots, N의 번호가 붙어 있다. ii번 사람의 키는 AiA_i이다. ii번 사람과 jj번 사람의 거리는 ∣i−j∣|i - j|이다.

모든 ii에 대해, 키가 Ai−KA_i - K 이상 AiA_i 이하이면서 ii번 사람의 오른쪽에 서 있지 않은 사람 중에서 가장 먼 사람을 찾는다. 그 사람과의 거리를 구하고, 모든 ii에 대해 구한 거리를 합한 값을 출력하라. ii번 사람 자신은 위 조건을 만족하므로 그러한 사람은 항상 존재한다.

입력

첫 줄에 테스트 케이스의 개수를 나타내는 자연수 TT가 주어진다. 이후 TT개의 테스트 케이스가 차례로 주어진다. (1≤T≤311 \le T \le 31)

각 테스트 케이스의 첫 줄에는 정수 NN, KK가 주어진다. (1≤N≤200 0001 \le N \le 200\,000, 0≤K≤500 0000 \le K \le 500\,000)

다음 줄에는 정수 A1,…,ANA_1, \ldots, A_N이 주어진다. (0≤Ai≤500 0000 \le A_i \le 500\,000)

모든 테스트 케이스의 NN을 합하면 2 000 0002\,000\,000 이하이다.

출력

각 테스트 케이스마다 첫 줄에 "Case #CC"를 출력한다. 여기서 CC는 테스트 케이스의 번호이다. 다음 줄에는 문제의 정답을 출력한다.

예제1

  1. 예제 1

    입력
    2
    3 1
    1 2 3
    9 3
    5 1 3 5 8 6 6 9 10
    
    예상 출력
    Case #1
    2
    Case #2
    26