HDU - 5178 - pairs

2015-07-20 17:14:36 ? 作者: ? 浏览: 3

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; } 
      
     
    
   
  















-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: