set做法85pts求条
查看原帖
set做法85pts求条
752711
hateful_bug楼主2025/7/28 18:01
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e5+10,inf=1e15;
int n,a[N];
set<pair<int,int> > m;
signed main()
{
	scanf("%lld",&n);
	for(int i=1;i<=n;i++)
	scanf("%lld",&a[i]);
	m.insert({-inf,0});
	m.insert({inf,0});
	m.insert({a[1],1});
	for(int i=2;i<=n;i++)
	{
		m.insert({a[i],i});
		auto it=m.find({a[i],i});
		auto it1=it,it2=it;
		it1--,it2++;
		int shu1=a[i]-(*it1).first;
		int shu2=(*it2).first-a[i];
		if(shu1<shu2)
		printf("%lld %lld\n",shu1,(*it1).second);
		else if(shu1>shu2)
		printf("%lld %lld\n",shu2,(*it2).second);
		else
		{
			printf("%lld ",shu1);
			if((*it1).second<(*it2).second)
			printf("%lld\n",(*it1).second);
			else
			printf("%lld\n",(*it2).second);
		}
	}
	return 0;
}
2025/7/28 18:01
加载中...