Cod sursa(job #580996)

Utilizator soriynSorin Rita soriyn Data 13 aprilie 2011 17:54:08
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>

int g[1005][3];
int e,c;
int sol[10005],uz[1005];
int n,t,minim;
const int inf=2000000000;
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d\n%d",&n,&t);
	for(int i=1;i<=n;i++)
		scanf("%d %d",&g[i][1],&g[i][2]);
	for(int i=1;i<=t;i++) sol[i]=inf;
	for(int i=1;i<=t;i++)
	{
		minim=1<<30;
		for(int j=1;j<=n;j++)
		{
			if(i-g[j][1]>=0 && i-g[j][1]!=inf && uz[j]==0)
				if(sol[i-g[j][1]]+g[j][2]< sol[i] && sol[i]!=0) sol[i]=sol[i-g[j][1]]+g[j][2],uz[j]=1;
			if(i<=g[j][1] && minim>g[j][2]) minim=g[j][2];
				
		}
		if(sol[i]>minim) sol[i]=minim;
	}
	printf("%d",sol[t]);
		//for(int i=1;i<=t;i++)
			//printf("%d ",sol[i]);
}