0
已解决
汪恺恒
中级启示者
中级启示者
某市的市长每个月都有很多事情要做,所以他的助理帮助他整理了当月的行程,发现有不少重叠的行程,这些行程都很重要,为了让市长参加更多的活动,所以对预计安排的活动进行了取舍,如果发现有两个活动都能满足要求,则选择持续时间短的,如果持续时间一样则选择开始时间更早。现在想知道当月一共有多少活动要参加。
输入描述 Input Description
n+1行:
第一行:数字n,表示开始一共有n个活动(最多不超过30个活动)
接下来的n行,每行两个数字,分别表示活动的开始日期和结束日期(1-30之间的数字)
输出描述 Output Description
一个数字,参加活动的个数
WA50
#include <iostream>
#include<algorithm>
using namespace std;
struct node{
int s,e;
}a[205];
int n,cnt;
bool cmp(node x,node y){
if(x.e!=y.e)
return x.e<y.e;
return x.s>y.s;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i].s>>a[i].e;
sort(a+1,a+1+n,cmp);
int end=0;
for(int i=1;i<=n;i++){
if(a[i].s>=end){
cnt++;
end=a[i].e;
}
}
cout<<cnt;
return 0;
}