HDU 2037今年の夏休みはAC

1961 ワード

今年の夏休みは
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 9605    Accepted Submission(s): 4947
Problem Description
「今年の夏休みはACじゃないの?」
「はい」
「じゃあ、何してるの?」
「ワールドカップを見て、バカ!」
“@#$%^&*%...”
確かに、ワールドカップが来て、ファンの祝日も来て、多くのACMerもパソコンを捨てて、テレビに向かっていると思います.
ファンとして、できるだけ多くの完全な試合を見たいと思っています.もちろん、新時代の良い青年として、あなたはきっと他の番組を見ます.例えば、ニュースの連播(国の大事に関心を忘れないでください)、非常に6+7、スーパー女子学生、王小娘の「楽しい辞書」など、あなたが好きなテレビ番組の中継スケジュールをすべて知っているとします.合理的に手配しますか?(できるだけ多くのフル番組が見られるのが目標)
Input
入力データには複数のテストインスタンスが含まれており、各テストインスタンスの最初の行には整数n(n<=100)が1つしかなく、好きな番組の総数を表し、次いでn行のデータであり、各行には2つのデータTi_が含まれている.s,Ti_e(1<=i<=n)は、i番目の番組の開始時間と終了時間をそれぞれ表し、問題を簡略化するために、各時間を正の整数で表す.n=0は入力終了を示し、処理を行わない.
Output
各テストインスタンスについて、完全に見られるテレビ番組の個数を出力し、各テストインスタンスの出力は1行を占める.
Sample Input
12
1 3
3 4
0 7
3 8
15 19
15 20
10 15
8 18
6 12
5 10
4 14
2 9
0
Sample Output
5
Author
lcy

#include <stdio.h>
#include <stdlib.h>

#define _N 105

typedef struct{
	int Ti_s;
	int Ti_e;
}T;
T t[_N];

int cmp(const void *a, const void *b)
{
	return (*(T *)a).Ti_e - (*(T *)b).Ti_e;
}
//    :    ,              ,                             ,       ,  
//        ,          
int main()
{
	int n, i, cnt, temp;
	while(~scanf("%d", &n), n)
	{
		cnt = 1;
		for(i = 0; i < n; i++)
		{
			scanf("%d%d", &t[i].Ti_s, &t[i].Ti_e);
		}
		qsort(t, n, sizeof(T), cmp);
		temp = t[0].Ti_e;
		for(i = 1; i < n; i++)
		{
			if(temp <= t[i].Ti_s)
			{
				cnt++;
				temp = t[i].Ti_e;
			}
		}
		printf("%d
", cnt); } return 0; }