link:http://acm.sdibt.edu.cn:8080/judge/contest/view.action?cid=337#problem/A

题目是中文的,很好理解,看看就懂了~~其他就是按照题目做就行~~代码有注释,不懂得或发现有错的可留言,^-^

code:

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
using namespace std;

typedef structpon
{
    char name[10];
}pp;//定义类型

int main()
{
    int t,n,x,i,count;
    int sq0,sq1,sq2;//每个人的顺序
    char command[5],sname[10];
    ppp,q;
    scanf("%d",&t);
    for(i=1;i<=t;i++)
    {
	queue<pp>p0,p1,p2;//创建队列
        sq0=sq1=sq2=0;
        count=1;
        printf("Case %d:\n",i);
        scanf("%d",&n);
        while(n--)
        {
            scanf("%d%s",&x,command);
            if(strcmp(command,"IN")==0)//进入队列
            {
                scanf("%s",sname);
                strcpy(p.name,sname);
                if(x==0)//确定要进入的窗口,进入队列
                    p0.push(p);
                else if(x==1)
                    p1.push(p);
                else if(x==2)
                    p2.push(p);
            }
            //出队列
            else
            {
                if(x==0)
                {
                    if(!p0.empty())//计算买票的顺序
                    {
                        q=p0.front();//如果要出去的话,就出队列进行比较,确定是谁
			p0.pop();
                        if(strcmp(q.name,"lzs")==0)
                            sq0=count;
                        else if(strcmp(q.name,"v11")==0)
                            sq1=count;
                        else if(strcmp(q.name,"shadow")==0)
                            sq2=count;
			count++;//必须在这里进行++,因为可能出现不同的人,但依然要记录,因为这个WA了,切记!!
                    }
                }
                //以下雷同
                else if(x==1)
                {
                    if(!p1.empty())
                    {
                        q=p1.front();
						p1.pop();
                        if(strcmp(q.name,"lzs")==0)
                            sq0=count;
                        else if(strcmp(q.name,"v11")==0)
                            sq1=count;
                        else if(strcmp(q.name,"shadow")==0)
                            sq2=count;
						count++;
                    }
                }
                else if(x==2)
                {
                    if(!p2.empty())
                    {
                        q=p2.front();
						p2.pop();
                        if(strcmp(q.name,"lzs")==0)
                            sq0=count;
                        else if(strcmp(q.name,"v11")==0)
                            sq1=count;
                        else if(strcmp(q.name,"shadow")==0)
                            sq2=count;
		        count++;
                    }
                }
            }
        }
        printf("lzs:");
        if(sq0==0)//如果还为初值,则说明不确定~~
            printf("Unknown\n");
        else
            printf("%d\n",sq0);
        printf("v11:");
        if(sq1==0)
            printf("Unknown\n");
        else
            printf("%d\n",sq1);
        printf("shadow:");
        if(sq2==0)
            printf("Unknown\n");
        else
            printf("%d\n",sq2);
    }
    return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation