求助站外题
  • 板块灌水区
  • 楼主jlwz
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/9 11:05
  • 上次更新2023/11/3 10:56:33
查看原帖
求助站外题
708997
jlwz楼主2023/7/9 11:05

rt 我想用尺取法做,但是只通过了样例。

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

int n,z;
int a[200005];
bool b[200005]; 
long long ans=0;

int main()
{
	cin>>n>>z;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	sort(a+1,a+n+1);
	int i,j;
	for(i=1;i<=n;i++)
	{		
		while(b[i]==1) i++;
		j=i;
		while(abs(a[j]-a[i])<=z&&j<=n&&b[j]==0&&b[i]==0)
			j++;
		if(b[i]==0&&b[j]==0&&i<=n&&j<=n)
		{
			ans++;
			b[i]=1;
			b[j]=1;		
			cout<<i<<' '<<j<<endl;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2023/7/9 11:05
加载中...