HDU 2600 war

来源:互联网 发布:淘宝开店铺 编辑:程序博客网 时间:2024/06/06 06:06
//如果简单的用标记去做会消耗大量的内存(千万级别),而且最后求解的时候需要扫描,也容易超时。
//我们不妨采用这样的策略:对每一次战役的时间进行排序,细节看代码。然后采用段扫描的方法进行判断即可。
#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define MAX 103typedef struct{    int s;    int e;}node;node war[MAX];bool cmp(node a,node b){    return a.e>b.e?true:(a.s>b.s?true:false);}int main(){    int n,p,q;    char WarName[MAX];    while(scanf("%d",&n)!=EOF)    {        scanf("%d%d",&p,&q);        for(int i=0;i<n;i++)            {                scanf("%d%d",&war[i].s,&war[i].e);                getchar();                cin.getline(WarName,MAX);            }//,WarName);        sort(war,war+n,cmp);        int ans=q;        bool flag=false;        for(int i=0;i<n;i++)            if(ans>war[i].e)        {            flag=true;            break;        }        else        {            ans=war[i].s-1;        }       // system("pause");        if(flag)            printf("%d\n",ans);        else            printf("Badly!\n");    }    return 0;}

0 0
原创粉丝点击