s7h 喜欢玩英国源神!
在 Arcaea 的世界中,玩家需要通过根据节奏,敲打 note 来获得相应的分数。
对于每一个 note 的敲击,会根据精准度,给出该 note 的评价。从优到劣分为  PURE pure far lost 四种。
同时,游戏内存在回忆收集条机制,我们记一个谱面的物量(即 note 总数)为 $n$ ,则其回忆系数 $k$ 遵循以下公式:
$$ \begin{equation}
k=\left\{
	\begin{array}{ll}
		 \frac{80}{n} +0.2& n<400  \\
		 \frac{32}{n}+0.2&400\le n <600 \\
		 \frac{96}{n} +0.08&600\le n
	\end{array}\right.
\end{equation}$$
回忆收集条最初为 $0$ ,上限为 $100$ ,下限为 $0$ ,当玩家获得 pure 或 PURE 评价时,回忆收集条增加 $k$ ,当玩家获得 far 评价时,回忆收集条增加 $0.5×k$ ,当玩家获得 lost 评价时,回忆收集条减少 $2$ 。
在游戏结束时,会根据玩家的表现给予相应的评价:
当玩家一局中所有 note 都获得 PURE 的评价时,玩家获得满分。
否则,如果一局中所有 note 都获得 PURE 或 pure 的评价,玩家获得评价 pure memory。
否则,如果玩家整局没有 lost 的评价,玩家获得评价 full recall。
否则,如果在游戏结束时回忆收集条 >= 70,则获得 track complete 的评价,否则获得 track lost 的评价。
如今,s7h 给出了他在一局游戏中每个 note 的表现,请你告诉他最终会获得怎样的评价。
第一行输入一个正整数 $T$,代表数据组数。
对于每组数据,首先输入一行一个正整数,代表一局的 note 总数 $n$。
接下来 $n$ 行,每行一个字符串,为 PURE ,pure,far,lost的一种。
对于每组数据,输出一行字符串,代表 s7h 获得的最终评价。
如果 s7h 获得了满分,输出 That's impossible!。
如果 s7h 获得了 pure memory 评价,输出s7h orz。
如果 s7h 获得了 full recall 评价,输出s7h 666。
如果 s7h 获得了 track complete 评价,输出just so so。
如果 s7h 获得了 track lost 评价,输出 laji s7h。
3
3
PURE
pure
far
3
PURE
PURE
PURE
1
lost
s7h 666
That's impossible!
laji s7h
数据保证 $n\le2221$
错误代码:
#include<stdio.h>
int T;
int n,cnt_PURE,cnt_pure,cnt_far,cnt_lost;
double bar,k;
char s[10];
int main(){
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        if(n>=600)  k=96/n+0.08;
        else if(n>=400) k=32/n+0.2;
        else k=80/n+0.2;
        cnt_PURE=cnt_pure=cnt_far=cnt_lost=0;
        for(int i=1;i<=n;++i){
            scanf("%s",&s);
            if(s[0]=='P'){
                bar+=k;
                cnt_PURE++;
            }
            else if(s[0]=='p'){
                bar+=k;
                cnt_pure++;
            }
            else if(s[0]=='f'){
                bar+=0.5*k;
                cnt_far++;
            }
            else{
                bar–=2.0;
                cnt_lost++;
            }
        }
        if(cnt_PURE==n) printf("That's impossible!\n");
        else if(cnt_PURE+cnt_pure==n)   printf("s7h orz\n");
        else if(cnt_PURE+cnt_pure+cnt_far==n)   printf("s7h 666\n");
        else{
            if(bar>=70.0)   printf("just so so\n");
            else printf("1aji s7h\n");
        }
    }
    return 0;
}