求解,16分
  • 板块P1102 A-B 数对
  • 楼主snny0608
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/6 20:55
  • 上次更新2024/5/7 00:39:38
查看原帖
求解,16分
1303174
snny0608楼主2024/5/6 20:55

超时两组,对两组,剩下的WA 代码,求帮助

#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,sum;
	long long c;
	scanf("%d%lld",&n,&c);
	long long a[n];
	for(int i=0;i<n;i++){
		scanf("%lld",&a[i]);
	}
	sort(a,a+n);
	sum=0;
	int l=0,r=n-1,mid=l+(r-l)/2;
	for(int i=0;i<n;i++){
		l=0,r=n-1,mid=l+(r-l)/2;
		while(l<=r){
			if(a[i]+c==a[mid]){
				for(int j=mid;j<n;j++){
					if(a[j]!=a[i]+c){
						break;
					}
					sum++;
				}
			}
			if(a[i]+c<=a[mid]) r=mid-1;
			else l=mid+1;
			mid=int(l+(r-l)/2);
		}
	}
	printf("%d",sum);
}
2024/5/6 20:55
加载中...