题目描述
要求计算出所有 A - B = CA−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。
输入格式
输入共两行。
第一行,两个整数 N,C。
第二行,N 个整数,作为要求处理的那串数。
输出格式
一行,表示该串数中包含的满足A−B=C 的数对的个数。
输入输出样例
输入 #1
4 1 1 1 2 3
输出 #1
3
说明/提示
对于 75% 的数据,1≤N≤2000。
对于 100% 的数据,1≤N≤2×105。
保证所有输入数据绝对值小于 2^30,且 C≥1。
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-01 11:07:44
* @LastEditTime: 2022-03-01 11:17:26
*/
#include<bits/stdc++.h>
using namespace std;
long long int n,k;
long long int a[(int)1e6+10];
int main()
{
while(cin>>n>>k){
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
long long int ans=0;
for(int i=0;i<n;i++){
ans+=(upper_bound(a,a+n,a[i]+k)-a)-(lower_bound(a,a+n,a[i]+k)-a);
}
cout<<ans<<endl;
}
}
这篇博客主要介绍了一个算法问题,即在给定的一串整数中,计算满足A-B=C条件的数对数量。通过读取两个整数N和C,以及一串N个整数,程序对数对进行排序并使用二分查找方法来计算满足条件的数对个数。代码使用了C++编写,并给出了样例输入和输出。
817

被折叠的 条评论
为什么被折叠?



