这题用暴力怎么写啊,或者用二分怎么写:
我的代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#define MAXN 100005
using namespace std;
int m,n,a[MAXN],x[MAXN];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
x[i] += a[i]+m;
int ans=0;//A=B+c
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(j!=i&&a[i]==x[j]){
ans++;
}
}
}
printf("%d",ans);
return 0;
}
第二次:
#include<iostream>
#include<cstdio>
#include<cmath>
#define MAXN 1000005
using namespace std;
int n,m,a[MAXN];
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",a+i);
int ans=0;
for(int i=1;i<n;i++){
for(int j=i+1;j<=n;j++){
if(abs(a[i]-a[j])==m){
// printf("a[%d]-a[%d]=%d\n",i,j,m);
ans++;
}
}
}
cout<<ans<<endl;
return 0;
}
感觉没有什么质的改变;(所以该怎么写呢??)
——来自小盆友的问号。