火车入站

来源:互联网 发布:中文翻译韩文软件 编辑:程序博客网 时间:2024/06/10 05:51

Description

火车站人们总是在站台等待列车进站,一个站台有火车停留的时候就不能有其他火车进入,今天有n辆火车经过,已知它们进站时间Si以及出站时间Ti,进站时间到出站时间之间火车必须有一个站台给它停靠,问让所有火车都能按时停靠,至少要安排多少个站台给这些火车

Input

第一行输入一个正整数T,表示数据组数
每组数据第一行输入一个正整数n,表示火车数量(n<=10000)
接下来n行,每行输入2个正整数Si,Ti,表示第i辆火车的进站时间和出站时间(Si<Ti<1e9)

Output

每组数据输出至少需要安排多少个站台

Sample Input

131 33 44 6

Sample Output

2

将所有时间排序,并判断进站还是出站,进站就加一个站台,出站就减一个站台,中间保存的最大值就是答案。
#include<cstdio>#include<algorithm>using namespace std;struct train{    int time;    int isin;};train tr[20005];bool cmp(train a,train b){    if(a.time<b.time)        return true;    else if(a.time==b.time)        return a.isin<b.isin;    else        return false;}int main(){    int t,n,si,ti;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        int cnt=0;        while(n--)        {            scanf("%d%d",&si,&ti);            tr[cnt].time=si;            tr[cnt++].isin=0;            tr[cnt].time=ti;            tr[cnt++].isin=1;        }        sort(tr,tr+cnt,cmp);        int num=0,temp=0;        for(int i=0;i<cnt;++i)        {            if(tr[i].isin==0)                temp++;            else                temp--;            if(temp>num)                num=temp;        }        printf("%d\n",num);    }    return 0;}


0 0
原创粉丝点击