当初有人给我说这是线段树问题。
突然发现智商捉鸡了。这不就是一个排序就可以解决的么。
AC代码
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
struct lx
{
int a,b;
}l[50001];
bool cmp(lx a,lx b)
{
if(a.a==b.a)
return a.b<b.b;
else
return a.a<b.a;
}
int main()
{
while(scanf("%d",&n),n)
{
for(int i=0;i<n;i++)
scanf("%d%d",&l[i].a,&l[i].b);
sort(l,l+n,cmp);
int ans=1,m=l[n-1].b;
for(int i=n-2;i>=0;i--)
{
if(m<l[i].b)
m=l[i].b,ans++;
}
printf("%d\n",ans);
}
}