linch打歌

题目描述:

linch 非常喜欢玩Phigros,众所周知Phigros 是一款下落式音游((

Phigros屏幕底端有一条判定线。一首曲子有许多Tap键(可以看做一条与判定线平行的只有10.0宽度的线段),每个tap会在某个时刻从顶端匀速下落,而linch需要尽量精准地在每个tap 与判定线重合时点击它。由于linch可能在tap接触判定线之前就点击了,也可能在tap已经落到判定线之下时才点击。这时候,就需要考虑phigros的超宽松判定,以统计linch的完成情况。

有三种判定:PerfectGood(您好)和 Miss(小姐)。(为简化题目,忽略FlickHoldDrag等键)

有以下几种情况:

1、linch点击的时间在某个tap下落至其与判定线重合的时间的3s前(记为 △t≥3.0,下同),则不产生判定效果。(无意义点击)

2、1.8≤△t<3.0,则此tap 产生miss判定并消失;

3、0.8≤△t<1.8或者−2.0<△t≤−0.8,则此tap产生good判定并消失;

4、−0.8<△t<0.8(负数代表在tap到达判定线之后点击),则此tap产生perfect 判定并消失;

5、△t≤−2.0,则此tap会落出屏幕,记miss 判定并消失(即在此tap落于判定线之下2.0s后自己产生miss判定),点击对此tap不会产生任何判定效果。

除此之外,phigros 还有最大连击(max combo)。连击(combo)是指从某一个非miss 的判定开始,到某一个非miss的判定结束(在这段区间内按时间顺序没有任何miss判定)。而 max combo 则指的是 combo 的最大值。

Phigros有效判定为点击该tap键正下方。每次点击只会对可能产生判定效果的tap中位置最低的一个产生判定。 也就是说,linch只有点击某个tap下方的位置才可能将其消除,并且若两个tap有上下相对距离地一起下落,那么如果点击可以使下面的tap消除,则一定不会使上面的tap消除。(优先判定距离屏幕上方最远的tap键)

Phigros中,一张谱面的分数最大值为1,000,000,由判定分(90万)与连击分(10万)相加得到。判定分由各tap的判定决定。tap达成perfect判定时,获得100%的判定分(可以视作判定分的满分90万与tap总数之比);达成good判定时,获得65%的判定分;其余判定均不获得任何判定分。连击分由最大连击数决定。最大连击数与谱面总物量之比是这部分分数的评判依据。计算方式为:最大连击数/总物量*100000 (就近取整)。

为了只用一根手指拿到最新的魔王曲的首杀(φ(Phi)),linch决定记住所有tap的起始位置和它们下落到判定线的时间。linch会提前决定在什么时间、什么位置点击。可是Sfly并不会计算linch可以得到的最终成绩,所以Sfly请你帮linch 算算他得到的max combo以及分数评级。(评级表在最下方)

请注意:由于linch手速很快,所以可能在同一时间点击两次(最多两次);如果同一时间有多个判定,按miss,good,perfect 的顺序依次处理。

输入格式:

第一行两个正整数 n,m代表tap数量与linch的点击数。

紧接着 n行,每行两个浮点数t,s分别表示每个tap从曲子开始算起到达判定线的时间和其左端点位置。

紧接着 m 行,每行两个浮点数T,x​分别表示linch每次点击从曲子开始算起的时间和其位置。

输出格式:

输出共一行,表示linch所打谱面的maxcombo以及评级,中间用一个空格隔开。

样例输入:

5 5
1.5 0.0
1.0 45.0
1.8 80.0
2.3 10.0
2.3 42.5
0.1 10.0
1.7 50.0
1.9 60.0
3.0 45.0
3.1 15.0

样例输出:

4 F

提示:

1、题目保证所有tap键落在屏幕内,且浮点数最多到小数点后一位;

2、游戏的结算评级如下: 

Φ(φ) 1000000分
V 960000~999999分
S 920000~959999分
A 880000~919999分
B 820000~879999分
C 700000~819999分
F 0~699999分

3、由于知道dalao们很强,就不写样例解释了,数据点全部手打,如果您迟迟无法AC可能是我数据点打错了(

4、数据范围:对于所有数据1≤n,m≤1000;0≤x≤200;0≤s≤190

时间限制: 2000ms
空间限制: 256MB

来源: Sfly