WA 50pts
  • 板块P1102 A-B 数对
  • 楼主umirin
  • 当前回复6
  • 已保存回复6
  • 发布时间2025/8/1 09:50
  • 上次更新2025/8/1 15:22:20
查看原帖
WA 50pts
1404765
umirin楼主2025/8/1 09:50

WA on #2#4#5#8#9#11

#include<bits/stdc++.h>
using namespace std;
long long l,r,mid,n,a[200010],c,sum,mtc,movf,movb,sumlast,lb,rb;
bool exist;
int main(){
	cin>>n>>c;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	sort(a+1,a+1+n);
	for(int i=1;i<=n;i++){
		if(a[i]>=c&&mtc==0) mtc=i;
	}
	for(int i=mtc;i<=n;i++){
		if(a[i]==a[i-1]){
			sum=sum+sumlast;
			continue;
		}	
		sumlast=0;
		l=1;
		r=i;
		exist=0;
		while(l<=r){
			mid=int((r+l)/2);
			if(a[mid]<a[i]-c) l=mid+1;
			if(a[mid]>=a[i]-c) r=mid-1;
			if(a[mid]==a[i]-c) exist=1;
			if(a[mid]==a[i]-c&&a[mid-1]!=a[i]-c){
				lb=mid;
				break;
			}
			if(l==r&&exist==0){
				break;
			}
		}
		if(exist==1){
			l=lb;
			r=i;
			while(l<=r){
				mid=int((r+l)/2);
				if(a[mid]<=a[i]-c) l=mid+1;
				if(a[mid]>a[i]-c) r=mid-1;
				if(a[mid]==a[i]-c&&a[mid+1]!=a[i]-c){
					rb=mid;
					break;
				}
			}
			sum=sum+(rb-lb+1);
			sumlast=rb-lb+1;
		}
	}
	cout<<sum;
	return 0;
}
2025/8/1 09:50
加载中...