记录编号 32901 评测结果 AAAAAAAAAA
题目名称 机房 最终得分 100
用户昵称 Gravatarmagic 是否通过 通过
代码语言 C++ 运行时间 0.104 s
提交时间 2011-11-08 19:43:38 内存使用 0.29 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
	const int maxlong=100000;
	int sum[3000];
	int f[3000],m,n,a;
int abs(int x);	
int abs(int x)
{
	if (x<0) return -x;else return x;
}
int main()
{
	freopen("orz.in","r",stdin);
	freopen("orz.out","w",stdout);
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n;i++)
	{
		scanf("%d",&a);
		f[i]=maxlong;
		if (a==2)
		{
			sum[i]=sum[i-1]+1;
		}
		else
		{
			sum[i]=sum[i-1];
		}
	}
	int d1,d2;
	f[1]=1;
	f[0]=0;
	for (int i=2;i<=n;i++)
	{
		for (int j=i-1;j>=1;j--)
		{
			d1=sum[i]-sum[j-1];
			d2=i-j+1-d1;
			if (abs(d1-d2)<=m||d1==0||d2==0)
			{
				if (f[i]>f[j-1]+1)
				{
					f[i]=f[j-1]+1;
				}
			}
		}
	}
	printf("%d",f[n]);
	return 0;
}