51nod 1428 活动安排问题(贪心)
将每个人的开始时间和结束时间都存入一个结构体数组,记录每个时间,及时间是开始还是结束。
按时间排序然后根据时间是开始还是结束,记入最大需要的教室。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const long long maxn = 1e18+1000;
struct point
{
int in;
int v;
}a[20010];
bool cmp(point a, point b)
{
if(a.v == b.v)
return a.in < b.in;
return a.v < b.v;
}
int main()
{
int n;
scanf("%d",&n);
for(int i = 0; i < 2*n; i++)
{
scanf("%d",&a[i].v);
if(i%2 == 0)
a[i].in = 1;
else
a[i].in = 0;
}
sort(a,a+2*n,cmp);
int now = 0;
int ans = 0;
for(int i = 0; i < 2*n; i++)
{
if(a[i].in == 1)
now++;
else
now--;
ans = max(now,ans);
}
printf("%d\n",ans);
return 0;
}