# -*- coding: utf-8 -*- # @project : 《Atcoder》 # @Author : created by bensonrachel on 2021/8/27 # @File : TPM(step3)C. Che city(CF).py def TPM(): l = 0 res = 0 for r in range(n): while (rate[r] - rate[l] > s): l += 1 res += l return res """ 本题中的数组是有序的! 代码非常简单,也是按照Step2的A题代码框架来修改。 不过注意问题的性质发生了改变: 本题是求数组中最大值和最小值的差值一定要大于r的区间个数 又因为数组是连续的,所以最大值取区间的最后一个和最小值取区间的第一个即可:rate[r] - rate[l] 而且正因为数组有序,所以枚举r,维护一个最小的l的时候,l前面的(不包括l)都是可以的区间左端点,所以需要累加l。 注意:是符合条件就进入while循环,l前进到不符合就退出来,说明此时的l的前面全部区间左端点都是符合条件的,可以累加,这样就不会算重复的区间个数。 """ if __name__ == "__main__": n, s = map(int, input().split()) rate = [int(i) for i in input().split()] print(TPM())