0
已解决
曹博扬
初级天翼
初级天翼
#include<iostream>
#include<algorithm>
using namespace std;
long long n,cnt,c;
long long a[300010];
long long b[300010];
int main(){
cin>>n>>c;
for(int i=0;i<n;i++){
cin>>a[i];
b[a[i]]++;
}
for(int i=0;i<n;i++){
int x=a[i]+c;
cnt+=b[x];
}
cout<<cnt;
return 0;
}//80分
快快快!!!!!!!!!!!!!!
求找错!!!
0
已采纳
朱优扬
中级天翼
中级天翼
my 思路:
定义
输入n;
for(int i=1;i<=n;i++)
输入a[i]
sort排序(对a数组排序)//注意头文件
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
如果a[j]-a[i]>c
跳出循环
如果a[j]-a[i]==c
cnt++;
}
}
输出cnt;
0
汪恺恒
中级启示者
中级启示者
因为输入的数据在int范围,所以这样容易数组越界
这题要用map
定义
map<int,int>b;//要加头文件#include<map>
int a[200005],n,c,ans;
输入
for(1至n){
cin>>a[i];
b[a[i]]++;
}
统计
for(1至n){
ans+=b[a[i]+c];
}
最后输出ans
0