#P5819. 【L&K R-03】音游大计算

【L&K R-03】音游大计算

题目描述

小 K 喜欢玩音游,特别是一款叫做 dimou 的音游。dimou 的判定机制是这样的:dimou 是单面(不像某 dy 开头的东西)下落式音游。具体来说,在屏幕底端有一条判定线。一首曲子有若干打击点(即 key,可以看做一条与判定线平行的只有左右宽度的线段),每个 key 会在某个时刻从顶端匀速下落,而玩家需要尽量精准地在每个 key 与判定线重合时点击它。

当然,玩家有可能在 key 接触判定线之前就点击了,也可能在 key 已经落到判定线之下时才点击。这时候,就需要考虑游戏的判定系统,以统计玩家完成一首曲子的情况。dimou 有三种判定:perfect,good 和 miss。总共有六种情况——

情况 11:玩家点击的时间在某个 key 下落至其与判定线重合的时间的前 1s1s 或更多(记为 t1\triangle t\ge1,下同),则不会产生任何判定效果(等于无意义点击);

情况 220.6t<10.6\le\triangle t<1,则此 key 产生一次 miss 判定并消失;

情况 330.2t<0.60.2\le\triangle t<0.6,则此 key 产生一次 good 判定并消失;

情况 440.2<t<0.2-0.2<\triangle t<0.2(负数代表在 key 到达判定线之后点击),则此 key 产生一次 perfect 判定并消失;

情况 550.6<t0.2-0.6<\triangle t\le-0.2,则此 key 产生一次 good 判定并消失;

情况 66t0.6\triangle t\le-0.6,则此 key 在点击之前就会落出屏幕,记一次 miss 判定并消失(即在此 key 落于判定线之下 0.6s0.6s 后自己产生一次 miss 判定),点击对此 key 不会产生任何判定效果。

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

除此之外,dimou 还有一些判定规则。一次点击的位置可以看做判定线上的一个点,则过此点作判定线的垂线,只有与此垂线有交点(交点可在端点)的 key 才可能因此次点击产生判定效果。并且, 每次点击只会对可能产生判定效果的 key 中位置(纵向高度)最低(离屏幕顶端最远)的一个产生判定效果。 形象地说,你只有点击某个 key 下方的位置才可能将其消除,并且若两个 key 有上下相对距离地一起下落,那么如果点击可以使下面的 key 消除,则一定不会使上面的 key 消除。特殊地,如果一次点击对两个或以上位置(高度)相同的 key 都可能产生判定效果,且没有更低的可能产生判定效果的 key,则这些 key 都会被消除。

为了把一首曲子打好,小 K 决定背谱,即记住所有 key 的位置和它们下落到判定线的时间。当然,小 K 也会事先决定好自己的打法,即决定在什么时间在什么位置点击。可是小 K 并不会计算自己的打法可以得到的最终成绩。请你帮小 K 算算,他的打法会得到多少 perfect 判定,多少 good 判定,多少 miss 判定,以及 max combo。

注意:小 K 不会在同一时间点击两次或以上。如果同一时间有多个判定,按 miss,good,perfect 的顺序依次处理。

输入格式

第一行两个正整数 n,mn,m,代表 key 数量与小 K 的点击数。

紧接着 nn 行,每行三个浮点数(小数位数不超过 55 位)ti,ai,bit_i,a_i,b_i,分别表示每个 key 从曲子开始算起到达判定线的时间,其左端点位置,右端点位置。

紧接着 mm 行,每行两个浮点数(小数位数不超过 55 位)Ti,xiT_i,x_i,分别表示小 K 每次点击从曲子开始算起的时间和其位置。

输出格式

一行,输出四个非负整数,两两用单个空格隔开,分别代表 perfect 数,good 数,miss 数和 max combo。

5 6
1 0.0 10.0
1.5 0.0 10.0
2.0 0.0 10.0
2.5 0.0 10.0
3.0 0.0 10.0
0.0 5.0
0.4 5.0
1.3 5.0
2.0 5.0
2.7 5.0
3.6 5.0
1 2 2 3
4 2
0.1 0.0 3.0
0.1 2.0 4.0
0.0 3.0 8.0
0.6 1.0 6.0
0.6 6.0
0.0 2.5
3 0 1 2

提示

样例 33输入输出

样例 44输入输出

【样例解释】

对于样例 1155 个 key 产生的判定按时间顺序分别为 miss,good,perfect,good,miss。第一次和最后一次点击不产生判定效果。

对于样例 22:按时间顺序,第一次点击(T=0.0T=0.0),可能产生判定效果的有(按输入顺序)第 1,2,41,2,4 个 key。第 1,21,2 个 key 同时到达判定线,第 44 个 key 比第 1,21,2 个 key 高。因此第一次点击只让第 1,21,2 个 key 产生 perfect 判定。第二次点击(T=0.6T=0.6),与其垂线有交点的有第 3,43,4 个 key,但第 33 个 key 此时已经产生 miss 判定并消失,因此这次点击让第 44 个 key 产生一次 perfect 判定,此时在同一时间出现了两个判定 perfect,miss,按照规则先处理 miss 再处理 perfect。所以,所有判定按时间顺序分别是 perfect,perfect,miss,perfect。容易发现 miss 把判定序列分成了两段,第一段的 combo 为 22,第二段的 combo 为 11,所以 max combo 为 22

【数据范围】

对于 30%30\% 数据,n,m5000n,m\le5000

对于另外 20%20\% 数据,n5000n\le5000m114514m\le114514

对于另外 10%10\% 数据,所有 aia_i 相等,所有 bib_i 相等。

对于另外 10%10\% 数据,ti,Ti,ai,bi,xit_i,T_i,a_i,b_i,x_i[0,104][0,10^4] 中随机生成。

对于 100%100\% 数据,1n,m1145141\le n,m\le1145140ti,Ti,ai,bi,xi1040\le t_i,T_i,a_i,b_i,x_i\le 10^4aibia_i\le b_i