标签:bnu
whalyzh最近参加了一个叫做BC(BNU CODER)比赛,比赛分为N场。参加的每个账号都有一个rating,初始时rating值为1500,每场比赛后系统会对参加的账号进行评价,如果评价为good,则该账号rating增加100分,但是不会超过3299;如果评价为bad,则该账号rating下降100分,但是不会低于0分。为了避免越做rating越低的情况,whalyzh注册了两个账号,每场比赛他只会使用rating低的账号(如果rating一样就随便用一个)。现在,他想知道N场比赛后rating高的那个账号rating是多少。
输入数据有多组。
第一行输入一个整数T(T≤10),表示数据组数。
每组数据第一行为两个整数N(N≤10^3),代表比赛场数。
接下来N行每行一个字符串good或者bad,代表第i场比赛中whalyzh获得的评价。
每组数据输出一个数,代表rating高的账号的rating值。
2 2 good good 2 good bad
1600 1600
#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
原文地址:http://blog.csdn.net/libin56842/article/details/45645267