求调,悬4关
查看原帖
求调,悬4关
564643
YLXxxx楼主2025/1/12 15:46

hack也可以,但悬一关

#include<bits/stdc++.h>
using namespace std;
long long n,m,a[210000],b[210000],z[210000],y[210000],x,l,r;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>m;
	for(long long i=1;i<=n;i++)
	{
		cin>>a[i]>>b[i];
		a[i]-=1;
		b[i]+=1;
	}
	x=1;
	r=m;
	for(long long i=1;i<=n;i++)
	{
		z[i]=z[i-1]+1;
		if(x<=a[i])
		{
			r=min(r,a[i]);
		}else
		{
			if(b[i]>n)
			{
				for(long long j=i;j<=n;j++)
				{
					z[j]=9e18;
				}
				break;
			}
			for(long long j=x+1;j<=b[i];j++)
			{
				x++;
				if(x>r)
				{
					z[i]++;
				}
			}
		}
	}
	x=m;
	l=1;
	for(long long i=1;i<=n;i++)
	{
		y[i]=y[i-1]+1;
		if(x>=b[i])
		{
			l=max(l,b[i]);
		}else
		{
			if(a[i]<1)
			{
				for(long long j=i;j<=n;j++)
				{
					y[j]=9e18;
				}
				break;
			}
			for(long long j=x-1;j>=a[i];j--)
			{
				x--;
				if(x<l)
				{
					y[i]++;
				}
			}
		}
	}
	for(long long i=1;i<=n;i++)
	{
		x=min(z[i],y[i]);
		if(x==9e18)
		{
			cout<<-1<<endl;
		}else
		{
			cout<<x<<endl;
		}
	}
	return 0;
}
2025/1/12 15:46
加载中...