#L3259. 「ROIR 2020 Day 1」对常规的斗争

    ID: 4313 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>组合数学其他双指针扫描数据结构差分贡献法滑动窗口区间贡献

「ROIR 2020 Day 1」对常规的斗争

题目描述

译自 ROIR 2020 Day1 T3. Борьба с рутиной

判断员工业绩的一个重要因素就是处理日常事务的能力。

我们考虑员工连续 nn 天的工作情况,第 ii 天执行的工作为 aia_i

为了评估员工的工作业绩,使用以下方法:

选定一个整数 dd,考虑所有连续 dd 天的日期段,对于每一段这样的日子,我们统计员工完成的不同工作的种类数。

SdS_d 表示每一段这样连续 dd 天的日期段完成的不同种类工作数之和。

现在需要你来统计出 S1nS_{1 \sim n} 的值。

输入格式

输入共两行:

第一行为一个整数 nn,表示工作的总天数。

第二行 nn 个整数,表示每天所做的工作种类编号。

输出格式

输出共 nn 个数,为 S1nS_{1 \sim n}

样例 1

输入

5
1 3 2 1 2

输出

5 8 8 6 3

S1S_1:

日期段 所有工种 不同的工种的数量
1-1 1 1
2-2 3
3-3 2
4-4 1
5-5 2

所以 S1=1+1+1+1+1=5S_1 = 1 + 1 + 1 + 1 + 1 = 5

S2S_2:

日期段 所有工种 不同的工种的数量
1-2 1, 3 2
2-3 3, 2
3-4 2, 1
4-5 1, 2

所以 S2=2+2+2+2=8S_2 = 2 + 2 + 2 + 2 = 8

S3S_3:

日期段 所有工种 不同的工种的数量
1-3 1, 3, 2 3
2-4 3, 2, 1
3-5 2, 1, 2 2

所以 S3=3+3+2=8S_3 = 3 + 3 + 2 = 8

S4S_4:

日期段 所有工种 不同的工种的数量
1-4 1, 3, 2, 1 3
2-5 3, 2, 1, 2

所以 S4=3+3=6S_4 = 3 + 3 = 6

S5S_5:

日期段 所有工种 不同的工种的数量
1-5 1, 3, 2, 1, 2 3

所以 S5=3S_5 = 3

样例 2

输入

3
10 10 10

输出

3 2 1

数据范围与提示

对于 100%100\% 的数据,1n2×1051 \leq n \leq 2 \times 10^51ai1091 \leq a_i \leq 10^9

任务编号 特殊限制 分值
1 1n501 \leq n \leq 501ai501 \leq a_i \leq 50 1212
2 1n501 \leq n \leq 501ai1091 \leq a_i \leq 10^9 1010
3 1n5001 \leq n \leq 5001ai1091 \leq a_i \leq 10^9
4 1n50001 \leq n \leq 50001ai50001 \leq a_i \leq 5000 1212
5 1n50001 \leq n \leq 50001ai1091 \leq a_i \leq 10^9 1010
6 1n2×1051 \leq n \leq 2 \times 10^51ai501 \leq a_i \leq 50 1616
7 无特殊限制 3030