Cod sursa(job #76429)

Utilizator a7893Nae Mihai a7893 Data 9 august 2007 19:58:13
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#define N 10000
#define INF 1000000000
int g,w,a[N];
struct vec{
	int e,c;
}v[N];
void read()
{
	int i;
	scanf("%d%d",&g,&w);
	for(i=0;i<g;i++)
		scanf("%d%d",&v[i].e,&v[i].c);
}
void solve()
{
	int i,min=INF,j;
	for(i=1;i<N;i++)
		a[i]=INF;
	for(i=0;i<g;++i)
		for(j=w;j>=0;j--)
			if(a[j]<INF)
			{
				if(j+v[i].e>=w&&a[j]+v[i].c<min)
					min=a[j]+v[i].c;
				if(j+v[i].e<w&&a[j]+v[i].c<a[j+v[i].e])
					a[j+v[i].e]=a[j]+v[i].c;
			}
	printf("%d\n",min!=INF?min:-1);
}
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	read();
	solve();
	return 0;
}