41分求助
查看原帖
41分求助
608869
wnc0123456789楼主2023/7/11 14:10

第二个测试点复制不进去,有200000个数据,然后5个WA2个RE

#include<bits/stdc++.h>
using namespace std;
const int N=200010;
int n,m;
int a[N],sum[N];
int l,r,mid,maxn,cnt;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		maxn=max(maxn,a[i]);
		sum[a[i]]++;
	}
	for(int i=1;i<=n;i++){
		l=1,r=maxn;
		while(l<=r){
			mid=(l+r)/2;
			if(a[i]<mid)break;
			if(a[i]-mid==m){
				cnt+=sum[mid];
				break;
			}
			if(a[i]-mid<m)r=mid-1;
			if(a[i]-mid>m)l=mid+1;
		}
	}
	printf("%d",cnt);
	return 0;
}
2023/7/11 14:10
加载中...