记录编号 34203 评测结果 AAAAAAAAAA
题目名称 机房 最终得分 100
用户昵称 GravatarQhelDIV 是否通过 通过
代码语言 C++ 运行时间 0.081 s
提交时间 2011-12-03 21:42:24 内存使用 0.30 MiB
显示代码纯文本
#include <fstream>
using namespace std;  
ifstream fin("orz.in");
ofstream fout("orz.out");
const long long Infinite=1000000000;
int N,M;  int S[2501],sum1[2501],sum2[2501],f[2501];
template <class T>
T Abs(T a)  
{  
    if (a<0)  
        return(0-a);  
    else  
        return(a);  
}  

void Init()
{
	fin>>N>>M;
	for(int i=1;i<=N;i++)
	{
		fin>>S[i];
		if(S[i]==1)
		{
			sum1[i]=sum1[i-1]+1;
			sum2[i]=sum2[i-1];
		}
		else
		{
			sum1[i]=sum1[i-1];
			sum2[i]=sum2[i-1]+1;
		}
	}
}
int main()  
{
	int i,j;
	Init();
	for(i=1;i<=N;i++)
	{
		int Min=Infinite;
		for(j=1;j<=i;j++)
		{
			int A1=sum1[i]-sum1[j-1],A2=sum2[i]-sum2[j-1];
			if(A2==0 || A1==0 || Abs(A2-A1)<=M)
			{
				if(Min>f[j-1]+1)
					Min=f[j-1]+1;
			}
		}
		f[i]=Min;
	}
	fout<<f[N]<<endl;
	fin.close();
	fout.close();
    return 0 ;
}  
/*if(A1==j-i+1 || A2==j-i+1 || Abs(A2-A1)<=M)*/