比赛 20111108 评测结果 AAAAAAAAAA
题目名称 机房 最终得分 100
用户昵称 Pom 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-11-08 10:26:11
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath>

using namespace std;

const int oo=1000000;
const int MAXN=2555;

int n,m,i,j,k,f[MAXN],sum[MAXN];

int main()
{
	freopen("orz.in","r",stdin);
	freopen("orz.out","w",stdout);
	scanf("%d%d",&n,&m);
	f[1]=1;
	for (i=1;i<=n;i++)
	{
		scanf("%d",&j);
		if (j==1) sum[i]=sum[i-1]-1;
		else sum[i]=sum[i-1]+1;
	}
	for (i=2;i<=n;i++)
	{
		f[i]=oo;
		for (j=0;j<i;j++)
			if (abs(sum[i]-sum[j])<=m || abs(sum[i]-sum[j])==i-j)
				f[i]=min(f[i],f[j]+1);
	}
	printf("%d\n",f[n]);
	return 0;
}