比赛 20110414pm 评测结果 MMMMMMMMMM
题目名称 气象牛 最终得分 0
用户昵称 kaaala 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-04-14 15:46:37
显示代码纯文本
#include<fstream>
#include<cmath>
#include<cstdlib>
#include<string>

using namespace std;

long f[1000001][101],a[1000001],n,m;

int main()
{
	long i,j,k,mn,tmp;
	ifstream fin("baric.in");
	ofstream fout("baric.out");
	fin>>n>>m;
	for(i=1;i<=n;i++)
		fin>>a[i];
	for(i=1;i<=n;i++)
		for(j=1;j<=n;j++)
			f[i][j]=0x7fffffff;
	for(i=1;i<=n;i++)
	{
		f[i][1]=0;
		for(k=1;k<i;k++)
			f[i][1]+=2*abs(a[i]-a[k]);
		for(k=1;k<i;k++)
		{
			tmp=0;
			for(j=k+1;j<i;j++)
				tmp+=abs(2*a[j]-a[k]-a[i]);
			for(j=2;j<=k+1;j++)
				f[i][j]=min(f[i][j],f[k][j-1]+tmp);
		}
	}
	for(j=1;j<=n;j++)
	{
		mn=0x7fffffff;
		for(i=j;i<=n;i++)
		{
			tmp=0;
			for(k=i+1;k<=n;k++)
				tmp+=2*abs(a[k]-a[i]);
			mn=min(mn,f[i][j]+tmp);
		}
		if(mn<=m)
		{
			fout<<j<<' '<<mn<<endl;
			fin.close();
			fout.close();
			return 0;
		}
	}
	fin.close();
	fout.close();
	return 0;
}