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]);
}
}