题解 | #万万没想到之抓捕孔连顺#
万万没想到之抓捕孔连顺
http://www.nowcoder.com/questionTerminal/c0803540c94848baac03096745b55b9b
import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.IOException; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String str = reader.readLine(); String[] splits = str.split(" "); int n = Integer.parseInt(splits[0]); int d = Integer.parseInt(splits[1]); str = reader.readLine(); splits = str.split(" "); int[] arr = new int[n]; int begin = 0, end = 0; long res = 0; for(; end < n; end++){ arr[end] = Integer.parseInt(splits[end]); if(arr[end] - arr[begin] > d){ while(arr[end] - arr[begin] > d){ res += (long)(end - begin - 1) * (end - begin - 2) / 2; begin++; } } } for (; begin <= n-3; begin++) { res += (long)(end - begin - 1) * (end - begin - 2) / 2; } res %= 99997867; System.out.println(res); } }