校赛排名2

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string.h>
using namespace std;
int n;//记录已出现的队伍数
//注意罚时时如何处理的
struct student
{
    int pass_number;//ac的数目
    int time;//罚时
    int pass[16];//标记该题目是否被ac,其实没必要,根据failed就可以判断了
    char name[21];
    int failed[16];
};
bool cmp(student x,student y)//重载运算符,被sort 函数所用;
{
    if(x.pass_number!=y.pass_number)
        return x.pass_number>y.pass_number;
    else
        return x.time<y.time;
}
//每行一个评判结果,格式为:时间(第几分钟提交的)+半角空格+队名+半角空格+题号+半角空格+评判结果(0通过,其它为出错)

student a[500001];
int main()
{
   int time,flag,i,flag1;
   char name[100];
   char number;
   while(scanf("%d %s %c %d",&time,name,&number,&flag)!=EOF)
   {
       flag1=1;//用来标记该队伍有没有出现过

      for(i=0;i<n;i++)
      {
          if(strcmp(name,a[i].name)==0)//如果有相同,就跳出循环,不用n++
          {
              //printf("ok\n");
               flag1=0;
              break;
          }

      }
      if(flag1==1)
       {
           n++;
           //printf("n=%d,i=%d\n",n,i);
        }
      strcpy(a[i].name,name);

      if(flag==0&&a[i].pass[number-'A'+1]==0)//正确且没被ac过
      {
          a[i].pass_number++;
          a[i].pass[number-'A'+1]=1;//标记被ac过
          a[i].time+=time+20*a[i].failed[number-'A'+1];//时间=提交时间+错误次数
      }
      if(flag!=0&&a[i].pass[number-'A'+1]==0)//错误且没被ac过
      {
         a[i].failed[number-'A'+1]++;//该题错误次数加一;
      }
       /* for(i=0;i<n;i++)
      {
       if(a[i].pass_number==0)
        break;
       else
        printf("%s %d %d\n",a[i].name,a[i].pass_number,a[i].time);
       }*/
     // printf("goulaide");
   }
   sort(a,a+n,cmp);

   for(i=0;i<n;i++)//输出
   {
       if(a[i].pass_number==0)
        break;
       else
        printf("%s %d %d\n",a[i].name,a[i].pass_number,a[i].time);
   }
  // printf("xiba\n");
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值