#P11465. [BalticOI 2025]BOI 缩写

[BalticOI 2025]BOI 缩写

题目描述

你肯定知道,BOI 是波罗的海信息学奥林匹克竞赛(Baltic Olympiad in Informatics)的缩写。

不过,主办方觉得 BOI 这个缩写念起来太简单了(毕竟在英语里它只有一个音节)。所以,他们决定设计一个新的缩写。为了让它与 CEOI 等其他区域性奥林匹克竞赛的缩写区分开来,新缩写依然只由字符 BOI 组成。而且,B 必须是新缩写中最常见的字符,也就是说,B 的出现次数必须严格多于 OI 的出现次数。

例如,OBOIIBBB 是合法的缩写,但 IBIIBBBOIOBCB 则不是。

为了增加趣味性,主办方没有直接公布完整的缩写,而是提供了一些线索:他们给出了新缩写中每个连续子串中最常见字符的出现次数。注意,这个最常见字符不一定是 B,而且最常见字符也不一定唯一。令人惊讶的是,这些线索竟然足以推断出所有 B 的位置。你能找出它们吗?

输入格式

第一行包含一个整数 nn (1n2000)(1 \leq n \leq 2000),表示新缩写的长度。

接下来的 nn 行描述了线索。第 ii 行包含 ni+1n-i+1 个整数 Mi,i,Mi,i+1,,Mi,nM_{i, i}, M_{i, i+1}, \ldots, M_{i, n} (1M,rn)(1 \leq M_{\ell, r} \leq n),其中 M,rM_{\ell, r} 表示缩写中从第 \ell 个位置开始到第 rr 个位置结束的子串中,最常见字符的出现次数。位置编号从 11nn

保证至少存在一个与给定线索一致的合法缩写。

输出格式

输出一行,包含所有 B 出现的位置,按升序排列,位置之间用单个空格分隔。每个位置必须是 11nn 范围内的整数。

6
1 1 2 3 3 3
1 1 2 2 2
1 2 2 2
1 1 2
1 2
1

1 3 4

数据范围与提示

详细子任务附加限制及分值如下表所示。

子任务编号 附加限制 分值
11 n10n \leq 10 1111
22 目标缩写只包含字符 BO 1212
33 目标缩写中没有两个连续的相同字符 1010
44 n40n \leq 40 1111
55 n500n \leq 500 1919
66 无附加限制 3737