Cod sursa(job #465710)

Utilizator crushackPopescu Silviu crushack Data 25 iunie 2010 12:24:47
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
#define lung 5000000
#define lng 1000

int m[lung+1],G,E,Sum;
struct generator
{int e,c;} a[lng];

void citire()
{
	int i;
	freopen("energii.in","r",stdin);
	scanf("%d%d",&G,&E);
	for (i=0;i<G;i++)
		scanf("%d%d",&a[i].e,&a[i].c),
		Sum+=a[i].e;
	fclose(stdin);
}

int rez()
{
	int i,j;
	m[0]=1;
	for (i=0;i<G;i++)
	{
		for (j=Sum-a[i].e;j>=0;j--)
			if (m[j] && (!m[ j + a[i].e ] || m[ j + a[i].e ] > m[j]+ a[i].c))
				m[j + a[i].e ] = m[j] + a[i].c;
	}
	for (i=E;!m[i];i++);
	return m[i]-1;
}

void scriere()
{
	freopen("energii.out","w",stdout);
	printf("%d\n",rez());
	fclose(stdout);
}

int main()
{
	citire();
	scriere();
	return 0;
}