pairs
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 349 Accepted Submission(s): 151
Problem Description John 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.(a
Input The first line contains a single integer
T
(about 5), indicating the number of cases.
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.
Output For each case, output an integer means how many pairs
that
|x[b]?x[a]|≤k
.
Sample Input
2
5 5
-100
0
100
101
102
5 300
-100
0
100
101
102
Sample Output
3
10
Source BestCoder Round #31
写傻逼了,居然还超时了。。
AC代码:
#include
#include
#include
#include
#include
#define LL long long using 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; }
|