码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 5178 - pairs

时间:2015-03-02 09:38:41      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:acm   codeforces   

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<a,b> that |x[b]?x[a]|k.(a<b)
 

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(1n100000,1k109).
Next n lines contain an integer x[i](?109x[i]109), means the X coordinates.
 

Output
For each case, output an integer means how many pairs<a,b> 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
 



写傻逼了,居然还超时了。。


AC代码:

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
#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;
} 















HDU - 5178 - pairs

标签:acm   codeforces   

原文地址:http://blog.csdn.net/u014355480/article/details/44004631

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!