競プロ日和

競技プログラミングを楽しむ

atcoder Tenka1 Programmer Beginner Contest C - Align

qupc2018_c

解けなかったので、解答PDFと動画を見て理解した。

まずは配列を昇順ソートする。 そして、配列の長さなどの各パターンに合わせてそれぞれの要素に重みをつける。

1)配列の長さが偶数

f:id:kani_panda:20181029230948j:plain f:id:kani_panda:20181029230502j:plain

 2パターンあるのだが、わかりやすいので①のみを考える。

  a.中央値-1より前に-2をかける

  b.中央値-1は-1をかける

  c.中央値は+1をかける

  d.中央値より後ろは+2をかける

  e.上記の合計を出力

2)配列の長さが奇数

 ①. Wのパターン

f:id:kani_panda:20181029230500j:plain

   a.中央値より前に-2をかける

   b.中央値は+1をかける

   c.中央値+1は+1をかける

   d.中央値+1より後ろは+2をかける

   e.上記の合計

 ②.逆Wのパターン

f:id:kani_panda:20181029230459j:plain

   a.中央値-1より前に-2をかける

   b.中央値-1は-1をかける

   c.中央値は-1をかける

   d.中央値より後ろは+2をかける

   e.上記の合計

 そして、①②の大きいほうを出力