86分求调
查看原帖
86分求调
1055005
aaa_lvzekai楼主2023/9/10 14:29
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read()
{
	ll number=0,check=1;
	char tmp=getchar();
	while(tmp<'0'||tmp>'9')
	{
		if(tmp=='-')
		{
			check=-1;
		}
		tmp=getchar();
	}
	while(tmp>='0'&&tmp<='9')
	{
		number=(number<<1)+(number<<3)+(tmp&15);
		tmp=getchar();
	}
	return number*check;
}
void write(ll x)
{
	if(x<0)
	{
		x=-x;
		putchar('-');
	}
	if(x>9)
	{
		write(x/10);
	}
	putchar(x%10+'0');
}
struct st
{
	ll x,y;
	bool operator < (const st &u)const
	{
		return x<u.x;
	}
};
const ll N=25010,INF=0x3f3f3f3f3f3f3f3f;
ll n,l,r,ans,res;
bool flag;
st a[N];
int main()
{
	n=read();
	l=1,r=read();
	for(int i=1;i<=n;i++)
	{
		a[i].x=read(),a[i].y=read();
	}
	sort(a+1,a+n+1);
	for(int i=1,now;i<=n;i++)
	{
		ans=-INF;
		now=i;
		while(now<=n&&a[now].x<=l+1)
		{
			ans=max(ans,a[now].y);
			now++;
		}
		if(ans<l)
		{
			break;
		}
		res++;
		if(ans>=r)
		{
			write(res);
			putchar('\n');
			return 0;
		}
		l=ans;
		i=now-1;
	}
	write(-1);
	putchar('\n');
	return 0;
}
2023/9/10 14:29
加载中...