![]() |
|
2025年12月15日
情報オリンピック日本委員会
|
JOI 君は団子職人である.団子には色 1 から色 N までの N 色あり,JOI 君は色 i (1 ≦ i ≦ N) の団子を Ai 個持っている.
JOI 君は持っている団子から 3 個選んで 1 本の串団子を作ることができる.ただし,選んだ 3 個の団子の色が c1, c2, c3 (1 ≦ c1 ≦ N,1 ≦ c2 ≦ N,1 ≦ c3 ≦ N) であるとき,c1 と c2, c2 と c3, c3 と c1 の差はそれぞれ 1 以下でなければならない. つまり以下の条件がすべて成り立つ必要がある.
複数の串団子で同じ団子を共有して使うことはできない.JOI 君は持っている団子をうまく選んでできるだけ多くの串団子を作りたい.
JOI 君が持っている団子についての情報が与えられたとき,JOI 君が作ることのできる串団子の本数の最大値を求めるプログラムを作成せよ.
入力は以下の形式で与えられる.
N
A1 A2 … AN
JOI 君が作ることのできる串団子の本数の最大値を 1 行で出力せよ.
入力例 1
3
3 1 2
出力例 1
2
色 1 の団子を 3 個使った串団子を 1 本と, 色 2 の団子を 1 個と色 3 の団子を 2 個使った串団子を 1 本の合計 2 本を作ることができる. 1 つ目の串団子は |1 − 1| = 0 ≦ 1, 2 つ目の串団子は |2 − 3| ≦ 1,|3 − 3| ≦ 1 より, この団子の選び方は条件を満たす. 2 本より多くの串団子を作ることはできないため,2 を出力する.
この入力例は小課題 5, 6 の制約を満たす.
入力例 2
1
99
出力例 2
33
色 1 の団子を 3 個使った串団子を 33 本作ることができる. 33 本より多くの串団子を作ることはできないため,33 を出力する.
この入力例は小課題 1, 2, 3, 6 の制約を満たす.
入力例 3
2
5 6
出力例 3
3
色 1 の団子を 3 個使った串団子を 1 本と, 色 1 の団子を 2 個と色 2 の団子を 1 個使った串団子を 1 本, 色 2 の団子を 3 個使った串団子を 1 本の 合計 3 本を作ることができる. 3 本より多くの串団子を作ることはできないため,3 を出力する.
この入力例は小課題 2, 6 の制約を満たす.
入力例 4
6
0 2 2 3 1 2
出力例 4
3
この入力例は小課題 5, 6 の制約を満たす.
入力例 5
1
0
出力例 5
0
この入力例は小課題 1, 2, 3, 5, 6 の制約を満たす.