#P2563. Demerit Points

    ID: 1564 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>模拟贪心其他数学Waterloo local 2000.09.23

Demerit Points

描述

在我们西边有一个省份,这里暂不提及它的名字,但它的名字不是以AABBSS开头。该省有一套独特的驾照扣分和加分系统。这个系统大致是这样运作的:

新司机初始时既没有加分也没有扣分。当司机因驾驶违规被定罪时,根据违规的严重程度,会被扣除221515分。

如果司机连续两年没有违规且没有扣分,每满两年可获得一个加分,最多可获得五个加分。每个加分可以抵消最多两个扣分。如果之后又发生违规,当扣分数量超过加分数量的两倍时,扣分数量会减少两倍的加分数量,同时加分数量清零。如果之后发生违规,且扣分数量小于等于加分数量的两倍,扣分数量会被减为00,加分数量会减少扣分数量的一半,任何分数部分的加分将被舍去。

只要司机有一年没有任何驾驶违规行为,扣分就会减少。扣分减少的幅度是扣分数量的一半或者22分,取两者中减少幅度更大的那个。任何分数部分或负的扣分将被舍去。这种扣分减少会在最近一次违规的每一周年进行,直到扣分全部消除。

如果在扣分减少或加分获得的同一天发生新的违规,在给予新的扣分之前先进行扣分减少或加分操作。

你的任务是读取一组司机的信息记录,并打印在任何给定时间的加分或扣分数量。

输入

输入的第一行包含驾照的颁发日期(格式为yyyymmddyyyymmdd)。后续行按时间顺序包含违规信息。每行包含违规日期(yyyymmddyyyymmdd)和扣分数(一个介于221515之间的整数)。

输出

在驾照颁发当天,以及每次加分或扣分数量发生变化时,按照以下格式输出一行,包含日期和分数。当在最后一次违规之后累计获得55个加分时,输出结束。

输入样例 1

19820508
19830606 2
19830607 2
19891212 15

输出样例 1

1982-05-08 No merit or demerit points.
1983-06-06 2 demerit point(s).
1983-06-07 4 demerit point(s).
1984-06-07 2 demerit point(s).
1985-06-07 No merit or demerit points.
1987-06-07 1 merit point(s).
1989-06-07 2 merit point(s).
1989-12-12 11 demerit point(s).
1990-12-12 5 demerit point(s).
1991-12-12 2 demerit point(s).
1992-12-12 No merit or demerit points.
1994-12-12 1 merit point(s).
1996-12-12 2 merit point(s).
1998-12-12 3 merit point(s).
2000-12-12 4 merit point(s).
2002-12-12 5 merit point(s).

题目来源

滑铁卢地区竞赛