X-man

导航

hdu 2115 :I Love This Game(Presentation Error容易输出wrong)

#include<stdio.h>
#include<queue>
#include<iostream>
#include<string.h>
using namespace std;
struct node
{
    char s[150];
    int level;
    int k;
    friend bool operator <(node n1,node n2)
    {
        if(n1.level==n2.level)     
        return strcmp(n2.s,n1.s)<0;
        else  
        return n1.level>n2.level;
    }
};
int main()
{
    int n;
    int a,b,d;
    char c[150];
    node temp;
    int m=0;
    while(scanf("%d",&n)!=EOF&&n!=0)
    {
        m++;
        priority_queue<node>p;
        while(n--)
        {
            scanf("%s %d:%d",c,&a,&b);
            d=a*60+b;
            temp.level=d;
            strcpy(temp.s,c);
            p.push(temp);
        }
        if(m!=1)printf("\n");
        int i=0;
        int jk=0,j=0;
        printf("Case #%d\n",m);//每组测试用例之间有空行
        while(!p.empty())
        {
            i++;
            if(i==1)printf("%s %d\n",p.top().s,i);
            else
            {
                if(jk==p.top().level)
                {
                    j++;
                    printf("%s %d\n",p.top().s,i-j);
                }
                else
                printf("%s %d\n",p.top().s,i);
            }
            jk=p.top().level;
            p.pop();
        }
        //printf("\n");//不能加在这,否则最后一行会多一行空行
    }
    return 0;
}

最近做水题 

              越发的体会到STL的强大(用的是优先队列)!

难题解决 :

        1.比较函数中的strcmp(n2.s,n1.s)<0第一次用;
2.最后名次的输出处理。
3.对比了别人的代码才知道这样输出。

posted on 2013-04-05 19:18  雨钝风轻  阅读(231)  评论(0编辑  收藏  举报