CF401B Sereja and Contests

题目描述

Sereja 是一名程序员,他喜欢参加 Codesorfes 的比赛。不过,Uzhland 的网络环境不好,所以 Sereja 有时会错过一些比赛。 Codesorfes 的比赛分为两类:$Div1$(面向高级程序员)和 $Div2$(面向初学者)。两类比赛 $Div1$ 和 $Div2$ 可以同时举行($Div1$ 不能单独举行,必须和 $Div2$ 同步举行),除此以外,比赛时间都不会重叠。每场比赛有唯一的正整数编号,所有比赛按开始时间依次编号(编号没有间隔)。如果一场 $Div1$ 和一场 $Div2$ 同时进行,这两场比赛的编号相差 1,且 $Div1$ 的编号更大。 Sereja 是初学者,所以他只能参加 $Div2$ 类型的比赛。此时 Sereja 正在参加一场编号为 $x$ 的 $Div2$ 比赛。他还很清楚自己在这场比赛前总共参加过 $k$ 场比赛。此外,他还记得所有自己参加过的比赛编号,以及这些比赛如果有同步的比赛,它们的编号是什么。对于自己错过的比赛,他什么都不记得。 现在 Sereja 想知道:他最多和最少可能错过多少场 $Div2$ 比赛?请你帮助他找出这两个数。

输入格式

第一行包含两个整数:$x$ $(1 \leq x \leq 4000)$ —— Sereja 当前参加的比赛编号,以及 $k$ $(0 \leq k < 4000)$ —— 他之前参加过的比赛场数。 接下来 $k$ 行描述了 Sereja 之前参加过的比赛。如果他参加过两场同步比赛的 $Div2$ 之一,该行格式为:`1 num_2 num_1`,其中 $num_2$ 是该场 $Div2$ 比赛的编号,$num_1$ 是对应同步举行的 $Div1$ 比赛编号,且有 $num_1 - num_2 = 1$。 如果他参加的是普通的 $Div2$ 比赛,该行格式为:`2 num`,其中 $num$ 是该场 $Div2$ 比赛的编号。 保证所有给定比赛的编号都小于 $x$。

输出格式

输出一行,包含两个整数,分别表示 Sereja 可能错过的 $Div2$ 比赛的最小值和最大值。

说明/提示

在第二个样例中,未被使用的比赛编号有 1、6、7。Sereja 可能错过的最少 $Div2$ 比赛数为 2,这时编号为 1 的比赛是普通 $Div2$ 比赛,编号 6 的比赛和 $Div1$ 同步举行。 最大可能错过的 $Div2$ 比赛数为 3,这时所有未被用到的编号都属于普通 $Div2$ 比赛。 由 ChatGPT 5 翻译