C++競プロ学習日記(仮)

( 学習記録であり解説Blogではないです )

ABC072 - C Together|AtCoder

C: Together - AtCoder Beginner Contest 072 | AtCoder を解きました。

題意:

  • 長さ  N の整数列  a_1, a_2, ... a_N が与えられます。
  •  a_i に対し、1 足すか、1 引くか、何もしない、の 3 つの操作が選べるので、ある整数  X を選んだ時、  a_i = X となる  i の個数の最大値を出力する。
  •  1 \leq N \leq 10^5
  •  0 \leq a_i < 10^5 (1 \leq i \leq N )
  •  a_i は整数

考察:

 a_i に対し 3 つの操作は自由に選べる為、 a_i = X となる  i の個数が最大化される操作を選択をすれば良い。
 a_i に対し  a_i,  a_i + 1,  a_i -1 の操作後となる整数をカウントし、最終的に重複が一番多い  X の個数が 3 つの操作を最善に選んだ結果となるので、その個数が答え。

コード: