csu-1339: 最后一滴血

http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1339

题意:输出每一道题的LB将得主。

思路:水题,注意一点就是标记这个队提交这个题是几次提交,只能算最早正确的那次,那么用一个二维数组标记下就行,其余的就简单了。

 

#include<cstdio>
#include<cstring>
struct node //每一道题的信息
{
    int time,id;  //提交的时间,提交者
    char a,s[5];   //题目编号,结果
}p[1001];
struct node1
{
    int time,id; //每一道题提交正确的最晚时间 和相应的提交者
}f[15];
int main()
{
    int n,t,m,i,l,ll,maxn=0,ff[105][15]; //ff[i][j]表示i这个队是否提交过j题,每个队只能取最开始提交正确的那次。
    scanf("%d%d%d",&n,&t,&m);
    memset(ff,0,sizeof(ff)); //初始为0
    for(i=1;i<=n;i++)
    {
        f[i].time=-1;  //把每一题提交时间初始为-1
    }
    for(i=0;i<m;i++)
    {
        scanf("%d%d %c %s",&p[i].time,&p[i].id,&p[i].a,p[i].s);
        //printf("%d%d %c %s",p[i].time,p[i].id,p[i].a,p[i].s);
        l=p[i].a-'A'+1; //题目编号
        ll=p[i].id;  //提交者编号
        if(l>maxn) maxn=l; //得出一共多少题
        if(strcmp(p[i].s,"Yes")==0)
        {
            ff[ll][l]++; //这个人的这个题目已经提交正确
            if(ff[ll][l]==1&&p[i].time>=f[l].time)  //这个队提交这个题目是第一次提交并且提交时间比这个题的最晚时间还要晚
            {
                f[l].time=p[i].time; //把最晚时间赋值
                f[l].id=p[i].id; //队伍编号
            }
            ff[ll][l]++; //表示提交过,下次不能再算
        }
    }
    for(i=1;i<=maxn;i++)
    {
            if(f[i].time==-1) printf("%c - -\n",i-1+'A');
            else printf("%c %d %d\n",i-1+'A',f[i].time,f[i].id);
    }
    return 0;
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值