BNU49101:rating计算

whalyzh最近参加了一个叫做BC(BNU CODER)比赛,比赛分为N场。参加的每个账号都有一个rating,初始时rating值为1500,每场比赛后系统会对参加的账号进行评价,如果评价为good,则该账号rating增加100分,但是不会超过3299;如果评价为bad,则该账号rating下降100分,但是不会低于0分。为了避免越做rating越低的情况,whalyzh注册了两个账号,每场比赛他只会使用rating低的账号(如果rating一样就随便用一个)。现在,他想知道N场比赛后rating高的那个账号rating是多少。

Input

输入数据有多组。

第一行输入一个整数T(T≤10),表示数据组数。

每组数据第一行为两个整数N(N≤10^3),代表比赛场数。

接下来N行每行一个字符串good或者bad,代表第i场比赛中whalyzh获得的评价。

Output

每组数据输出一个数,代表rating高的账号的rating值。

Sample Input

2
2
good
good
2
good
bad

Sample Output

1600
1600

Source

第十三届北京师范大学程序设计竞赛决赛

Author

hwq


#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
#define ls 2*i
#define rs 2*i+1
#define up(i,x,y) for(i=x;i<=y;i++)
#define down(i,x,y) for(i=x;i>=y;i--)
#define mem(a,x) memset(a,x,sizeof(a))
#define w(a) while(a)
#define LL long long
const double pi = acos(-1.0);
#define N 105
#define mod 19999997
const int INF = 0x3f3f3f3f;
#define exp 1e-8

int t,n;
char str[100];

int main()
{
    int s[2];
    scanf("%d",&t);
    w(t--)
    {
        scanf("%d",&n);
        s[0] = s[1] = 1500;
        w(n--)
        {
            scanf("%s",str);
            if(str[0]=='g')
            {
                s[0]+=100;
            }
            else
            {
                s[0]-=100;
            }
            sort(s,s+2);
            s[0]=s[0]>3299?3299:s[0];
            s[0]=s[0]<0?0:s[0];
            s[1]=s[1]>3299?3299:s[1];
            s[1]=s[1]<0?0:s[1];
        }
        sort(s,s+2);
        printf("%d\n",s[1]);
    }
}


你可能感兴趣的:(BNU)