AT_joi2017ho_e 縄 (Rope)

Description

[problemUrl]: https://atcoder.jp/contests/joi2017ho/tasks/joi2017ho_e

Input Format

標準入力から以下の入力を読み込め. - $ 1 $ 行目には $ 2 $ 個の整数 $ N,\ M $ が空白を区切りとして書かれている.これらは縄を構成する紐が $ N $ 個あり,それらの色が $ M $ 種類あることを表す. - $ 2 $ 行目には $ N $ 個の整数 $ C_1,\ C_2,\ \ldots,C_N $ が空白を区切りとして書かれている.これらは左から $ i $ 番目の紐の色が $ C_i $ であることを表す.

Output Format

標準出力に $ M $ 行で出力せよ.$ M $ 行のうちの $ c $ ($ 1\ \leqq\ c\ \leqq\ M $) 行目には,最終的な縄の長さが $ 2 $ となり,その縄に色 $ c $ を含むようにより合わせるためのコストの総和の最小値を $ 1 $ 行で出力せよ. - - - - - -

Explanation/Hint

### 課題 はじめの縄を構成する紐の色が与えられたとき,それぞれの色について,縄がその色を含み,かつ長さを $ 2 $ とするのに必要なコストの最小値を求めるプログラムを作成せよ. - - - - - - ### 制限 すべての入力データは以下の条件を満たす. - $ 2\ \leqq\ N\ \leqq\ 1\,000\,000 $. - $ 1\ \leqq\ M\ \leqq\ N $. - $ 1\ \leqq\ C_i\ \leqq\ M $ ($ 1\ \leqq\ i\ \leqq\ N $). - $ 1\ \leqq\ c\ \leqq\ M $ を満たすすべての整数 $ c $ について,$ C_i\ =\ c $ となる $ i $ が存在する. ### 小課題 #### 小課題 1 \[15 点\] 以下の条件を満たす. - $ N\ \leqq\ 15 $. - $ M\ \leqq\ 10 $. #### 小課題 2 \[30 点\] 以下の条件を満たす. - $ N\ \leqq\ 100\,000 $. - $ M\ \leqq\ 10 $. #### 小課題 3 \[10 点\] 以下の条件を満たす. - $ N\ \leqq\ 100\,000 $. - $ M\ \leqq\ 500 $. #### 小課題 4 \[25 点\] - $ M\ \leqq\ 5\,000 $ を満たす. #### 小課題 5 \[20 点\] 追加の制限はない. - - - - - - ### Sample Explanation 1 以下のような操作で,色 $ 1 $ を含むようコスト $ 2 $ で長さ $ 2 $ により合わせることができる. - 左から $ 2 $ 番目の紐を色 $ 1 $ に塗り替え,左から長さ $ 1 $ の位置が端点となるようより合わせる.左から順に縄の色は $ 1,\ 3,\ 3,\ 2 $ となり,太さは $ 2,\ 1,\ 1,\ 1 $ となる. - 左から $ 4 $ 番目の紐の色を $ 1 $ に塗り替え,左から長さ $ 2 $ の位置が端点となるようより合わせる.左から順に縄の色は $ 3,\ 1 $ となり,太さは $ 2,\ 3 $ となる. また,以下のような操作で,色 $ 2,\ 3 $ を含むようコスト $ 1 $ で長さ $ 2 $ により合わせることができる. - 左から長さ $ 3 $ の位置が端点となるようより合わせる.左から順に縄の色は $ 3,\ 2,\ 1 $ となり,太さは $ 2,\ 2,\ 1 $ となる. - 左から $ 3 $ 番目の紐の色を $ 2 $ に塗り替え,左から長さ $ 2 $ の位置が端点となるようより合わせる.左から順に縄の色は $ 2,\ 3 $ となり,太さは $ 3,\ 2 $ となる. - - - - - - ### Sample Explanation 2 以下のような操作で,色 $ 1 $ を含むようコスト $ 2 $ で長さ $ 2 $ により合わせることができる. - 左から長さ $ 2 $ の位置が端点となるようより合わせる. - 左から $ 1 $ 番目の紐の色を $ 1 $ に塗り替え,左から長さ $ 1 $ の位置が端点となるようより合わせる.塗り替える紐の太さが $ 2 $ なので,コストが $ 2 $ かかることに注意せよ. - 左から長さ $ 3 $ の位置が端点となるようより合わせる. - 左から長さ $ 1 $ の位置が端点となるようより合わせる. - - - - - - ### Sample Explanation 3 $ 1 $ 回のより合わせの前に,複数箇所の紐を塗り替えてもよい.