94AC - ABC072C: Together
ABC072-C (300 points)
問題
長さ の数列 の各 に対し, に を足す, 引く, 何もしないのいずれかの操作をする.
この操作の後, ある整数 を選んで, となる の個数を数える.
うまく操作を行い, を選ぶことで,この個数を最大化する.
- 入力は全て整数
方針
- 二つの数 を操作後に同じ数にできるするには が必要.
- の部分列のうち, 最大値と最小値の差が 以内に収まるもので最長の部分列の長さを求めれば良い.
- をソートしてしゃくとり.
# input N = int(input()) A = list(map(int, input().split())) A = sorted(A) # しゃくとり l, r, ans = 0, 0, 0 while r < N: if A[r] <= A[l] + 2: if r - l + 1 > ans: ans = r - l + 1 r += 1 else: l += 1 print(ans)