HDU-5178-pairs
Pairs
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission (s): 349 Accepted Submission (s): 151
Problem DescriptionJohn has N Points on the X axis, and their coordinates are (X [I], 0), (I = 0, 1, 2 ,..., N? 1) . He wants to know how many pairs That | X [B]? X [a] | ≤ k. (
InputThe first line contains a single integer T (About 5), indicating the number of instances.
Each test case begins with two integers N, k (1 ≤ n ≤ 100000,1 ≤ k ≤ 109) .
Next N Lines contain an integer X [I] (? 109 ≤ x [I] ≤ 109) , Means the X coordinates.
OutputFor each case, output an integer means how many pairs That | X [B]? X [a] | ≤ k .
Sample Input
25 5-10001001011025 300-1000100101102
Sample Output
310
SourceBestCoder Round #31
I was so stupid that I had timed out ..
AC code:
#include
#include
#include
#include #include
#define LL long longusing namespace std;int a[100005];int main() { int T; scanf("%d", &T); while(T--) { int n, k; scanf("%d %d", &n, &k); for(int i = 0; i < n; i++) { scanf("%d", &a[i]); } sort(a, a+n); LL ans = 0; for(int i = 0, j = 0; i < n; i++) { while(j + 1 < n && a[j + 1] - a[i] <= k) j++; ans += (j - i); } cout << ans << endl; } return 0;}