3210 - 清扫餐厅

很久很久以前,约翰只会做一种食品;而现在约翰能给他的N (1 \leq N \leq 40000)头奶牛供应M (1 \leq M \leq N)种不同的食品。但奶牛们非常挑剔,i号奶牛只吃食品P_i (1 \leq P_i \leq M)

每天,奶牛们按一定编号排队进自助餐厅用餐。不幸的是,这么多各类的食品会让清扫工作变得非常不方便。如果约翰在一次用餐中供应了K种食品,他之后就需要K^2的时间进行清扫。

为了减少清扫的时间,约翰决定把排好队的奶牛划分成若干组。每一组包含一段连续的奶牛。每一次,只让一组奶牛进入餐厅。这样,他可以让清扫所需的总用时变得最小。请计算这个最小用时。

输入

第一个两个数字NM,表示奶牛数和食品种类数。

接下来N行,第i+1行表示第i个奶牛需要的食品种类编号。

输出

输出仅一个数字,表示清扫时间的总和的最小值。

样例

输入

13 4 
1 
2 
1 
3 
2 
2 
3 
4 
3 
4 
3 
1 
4

输出

11

提示

把奶牛如此划分:1\2\1\3\22\34343\1\4。清扫的总时间是1+1+1+1+1+4+1+1=11。

来源

USACO

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题