AT_indeednow_2015_qualb_4 高橋くんと数列
题目描述
高桥君收到一个长度为 $N$ 的数列 $\{a_N\} = \{a_1, a_2, ..., a_N\}$,其中每个元素都是 $1$ 到 $C$ 之间的整数。他的任务是,对于每一个 $1$ 到 $C$ 之间的整数,返回包含该数至少一次的连续子序列的个数。
更准确地说,对于每个 $1 \leq k \leq C$,高桥君需要求出所有满足 $1 \leq l \leq r \leq N$,且在区间 $[l, r]$ 内存在 $a_i = k$ 的 $(l, r)$ 的组数。
需要注意的是,即使连续子序列的内容相同,只要 $(l, r)$ 不同,就认为是不同的子序列。请编写程序,模拟高桥君的操作。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $C$ $a_1$ $a_2$ … $a_N$
- 第 $1$ 行包含两个整数,数列长度 $N$($1 \leq N \leq 10^5$)和数列元素的最大值 $C$($1 \leq C \leq N$),以空格分隔。
- 第 $2$ 行包含 $N$ 个整数,表示高桥君收到的数列的元素,以空格分隔。保证 $1 \leq a_i \leq C$。另外,保证对于每个 $1 \leq k \leq C$,都存在至少一个 $i$ 使得 $a_i = k$。
输出格式
对于每个 $i$($1 \leq i \leq C$),输出一行,表示在 $\{a_N\}$ 中包含 $i$ 的连续子序列的个数。
不要忘记输出末尾的换行符。每行末尾不应有多余的空格。
说明/提示
### 部分分
本题设置了部分分。
- 在 $30$ 分的测试点中,$1 \leq C \leq 20$。
### 样例解释 1
包含 $1$ 的连续子序列有:$(l, r) = (1,1), (1,2), (1,3), (1,4), (2,4), (3,4), (4,4)$。
包含 $2$ 的连续子序列有:$(l, r) = (1,2), (1,3), (1,4), (2,2), (2,3), (2,4), (3,3), (3,4)$。
由 ChatGPT 4.1 翻译