Cod sursa(job #633568)

Utilizator DeadEyeNaiba Mihai Lucian DeadEye Data 14 noiembrie 2011 01:01:28
Problema Stalpi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<cstdio>
#include<algorithm>

const int maxN=10005;
const int INF=10000005;

int min(int a,int b)
{
	if(a<b)
		return a;
	return b;
}
int n,e,mx,sol,a[51],d[51][maxN];
int main()
{
	freopen("stalpi.in","r",stdin);
	freopen("stalpi.out","w",stdout);
	scanf("%d%d",&n,&e);
	
	int i,j,k,l;
	for(i=2;i<=n;++i)
		scanf("%d",&a[i]);
	mx=a[n]; sol=0;
	for(i=1;i<=mx;++i)
	{
		for(j=1;j<=n;++j)
			for(k=1;k<=n;++k)
				d[j][k]=0;
		for(j=1;j<=n;++j)
			for(k=1;k<=mx;++k)
				d[j][k]=INF;
		d[1][0]=0;
		for(j=2;j<=n-1;++j)
			for(k=0;k<=mx;++k)
				for(l=k;l>=0 && l>=k-i;--l)
					d[j][k]=min(d[j][k],d[j-1][l]+abs(k-a[j]));
		for(j=mx;j>=1 && mx-j<=i;--j)
			if(d[n-1][j]<=e)
			{
				sol=i; break;
			}
		if(sol!=0)
			break;
	}
	printf("%d\n",sol);
	return 0;
}