求助
  • 板块题目总版
  • 楼主venti520
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/3/28 19:59
  • 上次更新2024/3/28 21:36:00
查看原帖
求助
780145
venti520楼主2024/3/28 19:59

看不出来有问题,求助

#include<bits/stdc++.h>
using namespace std;
int a[200001];
int n,c;

void kp(int *arr,int start,int end)
{
	if(start>=end)
	return;
	int left=start;
	int right=end;
	int pivot=arr[left];
	while(left<right)
	{
	if(arr[right]>=pivot)
	{
		right--;
	}
	else
	{
		arr[left]=arr[right];
		left++;
		arr[right]=arr[left];
	}
	}
	arr[right]=pivot;
	kp(arr,start,left-1);
	kp(arr,right+1,end);
}

int main()
{
	cin>>n>>c; 
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	kp(a,1,n);
	
	int r1=1,r2=1;
	int ans=0;
	
	for(int i=1;i<=n;i++)
	{
			while(r1<=n&&a[r1]-a[i]<=c) r1++;
			while(r2<=n&&a[r2]-a[i]<c)	r2++;
			if(a[r1-1]-a[i]==c&&a[r2]-a[i]==c&&r1-i>=1)
			ans+=r1-r2;
	}
	cout<<ans;
	return 0;	
}
2024/3/28 19:59
加载中...