-  GarthがN個のりんごかオレンジをある順序で食べた。そのうちいくつかのリンゴに関しては食べた番目が与えられる。
 
				-  連続する K 個の中で K/2 以下のりんごしか食べてない場合、りんごの最大個数を求めよ。
 
				-  2≦K≦N≦2000
 
			
			
				-  dp? いや最後の K 個のパターンをキーにするにしては K が大きすぎる
 
				-  左から置けるとこに貪欲に置いてだめな理由もなさそうだ
 
				-  おけるところをどうやって覚えておくか...
 
				-  直近 K 個の和を計算しておいて、それを配ってmaxを取っておいたものが K/2 より小さければ置けそうだ
 
				-  めっちゃはまる
 
				-  終了間際 あれこれN^3だだめだ
 
			
			
			
				-  冷静に考えると置けるかの判定は K 個の sum を見て良くて、置いた時の sum の更新も K 回、全体で O(N^2) にすればよかったのだ
 
				-  置けるかチェック O(1) 更新 O(N^2) にしてしまっていた。
 
				-  それか BIT を使って置けるかの判定にO(NlogN)、更新にO(logN)でもいい。
 
				-  うむー全然だめだ。
 
			
			
class ApplesAndOrangesEasy {
	public:
	int maximumApples(int N, int K, vector <int> info) {
		VI w(N), sum(N); 
		REP(i, info.size()) w[info[i]-1]=1;
		REP(i, N) RANGE(j, max(0, i-K+1), i+1) sum[i]+=w[j];
		ll ans=info.size();
		REP(i, N) if(!w[i]) {
			bool ok=true;
			RANGE(j, i, min(N, i+K)) if(sum[j]>=K/2) ok=false;
			if(!ok) continue;
			ans++;
			RANGE(j, i, min(N, i+K)) sum[j]++;
		}
		return ans;
	}
};