问题标题: 酷町堂:3239 繁忙的市长

0
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;
}

 


0
已采纳
梁逸凡
梁逸凡
资深守护
资深守护

20行改成

if(a[i].s>end)

1
我要回答