hdu 5178
来源:互联网 发布:mac上使用的ios模拟器 编辑:程序博客网 时间:2024/04/30 14:01
pairs
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1056 Accepted Submission(s): 372
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 integersn,k(1≤n≤100000,1≤k≤109) .
Nextn lines contain an integer x[i](−109≤x[i]≤109) , means the X coordinates.
Each test case begins with two integers
Next
Output
For each case, output an integer means how many pairs<a,b> that |x[b]−x[a]|≤k .
Sample Input
25 5-10001001011025 300-1000100101102
Sample Output
310
Source
BestCoder Round #31
Recommend
hujie | We have carefully selected several similar problems for you: 5182 5181 5180 5179 5178
#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>using namespace std;#define ll long longll x[100010];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("%I64d",&x[i]); } sort(x,x+n); ll sum=0; for(int i=0;i<n-1;i++){ int left=i+1; int right=n-1; int mid=(left+right)>>1; while(1){ int t_mid=mid; if(x[mid]-x[i]>k){ right=mid-1; } else if(x[mid]-x[i]<k){ left=mid+1; } else{ break; } mid=(left+right)>>1; if(t_mid==mid){ break; } } if(x[mid]-x[i]<=k){ sum+=(ll)mid-i; } } printf("%I64d\n",sum); } return 0;}
0 0
- hdu 5178
- HDU-5178
- hdu 5178想法题
- HDU 5178 pairs 二分
- HDU - 5178 - pairs
- hdu 5178 二分查找
- hdu 5178 pairs
- hdu 5178 pairs (二分)
- hdu 5178 二分查找
- hdu 5178 pairs
- hdu 5178(尺取法)
- HDU 5178 pairs
- hdu
- hdu
- HDU
- hdu ()
- hdu
- hdu
- strlen 和 sizeof()不同点
- Struts2入门示例教程
- Linux下的通信时延测试程序
- const 与#define区别
- malloc() & free()函数区别
- hdu 5178
- 关于卸载软件不成功,导致再次安装软件出错的问题
- 黑马程序员---C语言--流程控制和函数
- strcpy和memcpy的不同
- linux 修改虚拟内存
- ffplay调节音量大小
- 安全性测试:输入校验规则
- 第8章 增加存档页面
- greenDao的使用教程