原题
http://acm.hdu.edu.cn/showproblem.php?pid=2037
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <limits.h>
#include <string.h>
#include <ctype.h>
#include <algorithm>
#include <iostream>
#include <stack>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <string>
using namespace std;
struct node{
int x;
int y;
}a[110];
bool cmp(node a,node b){//按照结束的时间从小到大来排序。如果相同则按照开始的时间来排序。因为在找的过程中,我们希望能获得更多的
if(a.y == b.y)//节目,所以上一个节目结束的时间应该要早点。
return a.x < b.x;
return a.y < b.y;
}
int main(){
int n,i;
while(~scanf("%d",&n)){
if(n == 0)
break;
int mark=2;
for(i=0;i<n;i++){
scanf("%d%d",&a[i].x,&a[i].y);
}
sort(a,a+n,cmp);
int j;
int k;
int ans = -1000;
int count=1;
for(k=0;k<n;k++){
count = 1;
mark = 2;
for(j=k;j<n;){
for(i=j+1;i<n;i++){
if(a[i].x >= a[j].y){
count++;
mark = 1;
break;
}
}
if(mark == 1){
j = i;
}
else{
break;
}
}
if(count > ans){
ans = count;
}
}
printf("%d\n",ans);
}
return 0;
}