计软对抗赛之 爱上CF

爱上CF

Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^

题目描述

CF,codeforces不是Crossfire。身为一个Acmer,RE大神与Soaring大神最喜欢做每五天一次的CF,从11:30到1:30,然后和逗比学长们一起等着跑数据等到两点半,然后再一起嘲笑一坨学长和柴爷,实在是人生一大快事。
但是Triple_S队的另一员——Winddreams,竟然还不会算CF的单局积分。实在是略萌啊。身为队长的RE大神只能把CF的详细规则再给Winddreams讲一遍了。
CF中共A,B,C,D,E五道题,其初始分分别为500,1000,1500,2000,2500。
比赛共两个小时,每过一分钟每道题目的分数分别下降2,4,8,16,32分。例如你在00:08的时候提交A题,就会获得484分。
比赛中对于不成功的提交(统称为WA)将扣掉该题50分;每道题的分数是单独的,如果没有AC不管这道题WA几次,不会扣总分。而且每道题的最低得分为150分,当分数降低至150分时,不在进行分数削减。
比赛中还有一种叫做HACK的玩法,就是在锁定自己的题目代码后,你可以查看他人的代码,如果别人的代码有漏洞你可以出一组测试数据证明他是错的,如果你成功了(Successful Hack)你讲获得100分,如果你失败了(Unsuccessful Hack)你将被扣50分。同理,你也可以被Hack如果你被Hack成功了(Hack)将视为该题WA。
由于最近RE大神和Soaring要忙一下补觉的问题,所以,需要你来为Winddreams写一个程序来计算得分情况。

输入

多组输入。输入一个T(T<=50)表示有T个操作,在接下来的T行里,每行输入三个个变量(中间用空格隔开),分别是时间t(XX:XX),题目No(A,B,C,D,E)以及题目返回结果E(WA ,AC,Hack,Successful Hack,Unsuccessful Hack)。

输出

最终得分。

示例输入

19
00:03 A AC
00:10 B WA
00:12 B WA
00:13 B AC
00:30 C WA
00:40 B Hack
00:45 B WA
00:45 B WA
00:46 B WA
00:47 B WA
00:48 B WA
00:48 B WA
00:50 B WA
00:54 B WA
00:55 B WA
00:57 B WA
00:59 B AC
01:10 A Successful Hack
01:49 B Unsuccessful Hack

示例输出

694
这道题HACK 算WA一次  然后在重新记分  比赛是没理解好这一条,就没AC  最后就是要注意输入了。。 下为AC代码
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
    int n;
    while(~scanf("%d",&n))
    {


    int sum=0;

    char aa[50];
    char f;
    int t3;

    int ta=0,tb=0,tc=0,td=0,te=0;
    int sa=0,sb=0,sc=0,sd=0,se=0;
    int q1=0,q2=0;
    int a=500,b=1000,c=1500,d=2000,e=2500;


    while(n--)
    {
        scanf("%d:%d %c%*c",&q1,&q2,&f);
        gets(aa);

        if(strcmp(aa,"AC")==0)
        {
            t3=q1*60+q2;

            if(f=='A')
            {
                a=a-2*t3-50*ta;
                if(a<150)
                    a=150;

                sa=1;
            }
            else  if(f=='B')
            {
                b=b-4*t3-50*tb;
                if(b<150)
                    b=150;
                sb=1;


            }
            else if(f=='C')
            {
                c=c-8*t3-50*tc;
                if(c<150)
                    c=150;
                sc=1;


            }
            else if(f=='D')
            {
                d=d-16*t3-50*td;
                if(d<150)
                    d=150;
                sd=1;


            }
            else if(f=='E')
            {
                e=e-32*t3-50*te;
                if(e<150)
                    e=150;
                se=1;


            }

        }
        else if(strcmp(aa,"WA")==0)
        {
            if(f=='A')
                ta++;
            else if(f=='B')
                tb++;
            else if(f=='C')
                tc++;
            else if(f=='D')
                td++;
            else if(f=='E')
                te++;

        }
        else if(strcmp(aa,"Hack")==0)
        {

            if(f=='A')
            {
                ta++;
                a=500;
                sa=0;
            }
            else if(f=='B')
            {
                tb++;
                b=1000;
                sb=0;
            }
            else if(f=='C')
            {
                tc++;
                c=1500;
                sc=0;
            }
            else if(f=='D')
            {
                td++;
                d=2000;
                sd=0;
            }
            else if(f=='E')
            {
                te++;
                e=1000;
                se=0;
            }


        }
        else if(strcmp(aa,"Successful Hack")==0)
        {
            if(f=='A')
                a+=100;
            else if(f=='B')
                b+=100;
            else if(f=='C')
                c+=100;
            else if(f=='D')
                d+=100;
            else if(f=='E')
                e+=100;
        }
        else if(strcmp(aa,"Unsuccessful Hack")==0)
        {
            if(f=='A')
            {
                if(a<150)
                    a=150;
                a-=50;


            }
            else if(f=='B')
            {
                if(b<150)
                    b=150;
                b-=50;


            }
            else if(f=='C')
            {

                c-=50;
                if(c<150)
                    c=150;
            }
            else if(f=='D')
            {
                d-=50;
                if(d<150)
                    d=150;
            }
            else if(f=='E')
            {
                e-=50;
                if(e<150)
                    e=150;
            }
        }

    }
    if(sa) sum+=a;
    if(sb) sum+=b;
    if(sc) sum+=c;
    if(sd) sum+=d;
    if(se) sum+=e;

    printf("%d\n",sum);
          }
          return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值