키가 비슷한 친구

면접 대비

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

요약
각 사람마다 자신의 왼쪽에 있으면서 키가 자신보다 K 이하만큼 작은 사람 중 가장 먼 사람을 찾아 거리의 합을 구한다.
난이도

보통10점 중 7점

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

문제

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

모든 ii 에 대해서, 키가 A_i−KA\_i - K 이상 A_iA\_i 이하면서, 나의 오른쪽에 서 있지 않은 사람들 중 가장 먼 사람을 찾고, 그 사람과의 거리를 합한 것을 출력하라. ii 번 사람에 대해 자신은 위 조건을 만족하기 때문에, 항상 그러한 사람들은 존재한다.

입력

파일의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 TT 가 주어지고,

이후 차례로 TT 개의 테스트 케이스가 주어진다. (1≤T≤311 \le T \le 31)

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

다음 줄에는 NN 개의 정수 A_1,…,A_NA\_1, \ldots, A\_N 이 주어진다. (0≤A_i≤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