YTU---2892-I免费看电影

2892: I--免费看电影

Time Limit: 1 Sec   Memory Limit: 128 MB
Submit: 13   Solved: 5
[ Submit][ Status][ Web Board]

Description

万象城星美影院开业1周年了,要举行为期一天的大酬宾,ACM队员准备去看电影。已知电影院的播放电影的各个时间阶段。要求ACM队员如何安排自己的时间,使得看的电影场次最多。

Input

测试数据第一行为n(n>=0),表示电影的场次;接着是n行,每行有两个整数,表示每场电影开始时间与结束时间。

Output

输出ACM队员最多能看的电影场次。

Sample Input

11
11 14
13 15
12 14
12 13
8 10
15 17
14 18
15 19
18 22
18 21
16 20

Sample Output

5




AC code:

#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>

using namespace std;

struct people
{
    int time1;
    int time2;
} pe[100];

bool amp(people a,people b)
{
    return a.time1<b.time1;
}
bool atp(people a,people b)
{
    return a.time2<b.time2;
}
int main()
{
    int n,i,sum=0,t2;
    cin >> n;
    for(i=0; i<n; i++)
        cin>>pe[i].time1>>pe[i].time2;
    sort(pe,pe+n,atp);
    sort(pe,pe+n,amp);
    if(n==0)
        cout<<sum<<endl;
    else
    {
        sum=1;
        for(i=0; i<n; )
        {
            if(i==0)
                t2=pe[i].time2;
            while(pe[i].time1==pe[i+1].time1)
                i++;
            i++;
            if(i==n)break;
            if(pe[i].time2<=t2)
                t2=pe[i].time2;
            else if(pe[i].time1>=t2)
            {
                sum++;
                t2=pe[i].time2;
            }
        }
        cout<<sum<<endl;
    }
    return 0;
}



闲来无事敲代码,一敲就停不下来~~~



你可能感兴趣的:(C++,算法)