双指针84pts求调
  • 板块P1102 A-B 数对
  • 楼主craft_07
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/10/30 15:58
  • 上次更新2023/11/2 10:41:49
查看原帖
双指针84pts求调
578251
craft_07楼主2023/10/30 15:58

错的点是#2和#4,把#2的样例下载之后发现输出零,但是不知道为什么错

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

using namespace std;

long long a[200003];

int main(){
	
//	freopen("x.in","r",stdin);
//	freopen("x.out","w",stdout);
	
	int n;long long c;
	scanf("%d%lld",&n,&c);
	for(int i=1;i<=n;i++)
	  scanf("%lld",&a[i]);
	sort(a+1,a+n+1);
	int l=1,r=1;
	long long ans=0;
	for(int i=1;i<=n;i++){
		while(a[i]-a[r]>=c&&r<i) r++;
		while(a[i]-a[l]>c&&l<r) l++;
		if(a[i]-a[r]<c) r--;
		if(a[i]-a[r]==c&&a[i]-a[l]==c) ans+=r-l+1;
	}
	printf("%lld",ans);
	
//	fclose(stdin);
//	fclose(stdout);
	
	return 0;
}
2023/10/30 15:58
加载中...