#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int n;
struct Range
{
int l, r;
bool operator < (const Range & W)const
{
return r < W.r;
}
}range[N];
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d%d", &range[i].l, &range[i].r);
sort(range, range + n);
int res = 0, ed = -2e9;
for (int i = 0; i < n; i ++ )
if (range[i].l >= ed)
{
res ++ ;
ed = range[i].r;
}
printf("%d\n", res);
return 0;
}
法二:
#include <iostream>
using namespace std;
int main()
{
while(1)
{
int n;
cin >> n;
if(n==0)
break;
int q[n][2];
for(int i = 0; i < n ; i ++)
for(int j= 0 ; j < 2 ; j ++)
cin >> q[i][j];
for(int i = 0 ; i < n - 1; i ++)
{
for(int j = i+1 ;j < n; j ++)
{
if(q[i][1] > q[j][1])
{
swap(q[i][1],q[j][1]);
swap(q[i][0],q[j][0]);
}
}
}
int t = 1;
for(int i = 1 ; i < n ; i ++)
{
if(q[i-1][1]<=q[i][0])
t++;
else
{
q[i][1]=q[i-1][1];
q[i][0]=q[i-1][0];
}
}
cout << t << endl;
}
}
|