原题连接:点击打开链接
Input
第一行一个正整数n (n <= 10000)代表活动的个数。 第二行到第(n + 1)行包含n个开始时间和结束时间。 开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000
Output
一行包含一个整数表示最少教室的个数。
Input示例
3 1 2 3 4 2 9
Output示例
2
#include<bits/stdc++.h>
using namespace std;
struct Time{
int st;
int endd;
}action[10001];
bool cmp(Time a,Time b)
{
if(a.endd==b.endd)
return a.st<=b.st;
return a.endd<b.endd;
}
main()
{
int n; //活动总数
while(~scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
{
cin >> action[i].st >> action[i].endd;
}
sort(action,action+n,cmp);
int cnt=0,s; // 记录能进行的活动数
for(int j=0;j<n;j++)
{
s=1;
for(int i=j+1;i<n;i++)
{
if(action[j].endd>action[i].st)
{
s++;
}
}
cnt=max(cnt,s);
}
cout << cnt << endl;
}
}