CSU 1339 最后一滴血 (简单模拟)

http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1339

注意只按照第一次提交yes的是时间来算,并且相同时间提交排在后面的时间要多几秒。因此需要另外开一个数组保存。

#include
#include
#include
using namespace std;
struct node{
    int time,id;
}q[20];
int d[20][105];

int main()
{
    int n,t,m;
    cin>>n>>t>>m;
    int ans=0;
    for(int i=0;i<12;i++)
    {
        q[i].time=-1;
        q[i].id=0;
    }
    memset(d,0,sizeof(d));
    for(int i=0;i<m;i++)
    {
        char a,b[10];
        int time,c;
        cin>>time>>c>>a>>b;         
        int tt=a-'A';
        ans=max(ans,tt);
        if(b[0]=='Y')
        {
            if(q[tt].time<=time)
            {
                if(d[tt][c]==0)
                {
                    q[tt].time=time;
                    q[tt].id=c;
                    d[tt][c]=1;
                }
            }
        }
    } 
    for(int i=0;i<=ans;i++)
    {
        printf("%c ",i+'A');
        if(q[i].time!=-1)
          printf("%d %d",q[i].time,q[i].id);
        else
          printf("- -");
        printf("\n");
    }
    return 0;
} 

你可能感兴趣的:(ACM)