Cod sursa(job #437044)

Utilizator crushackPopescu Silviu crushack Data 9 aprilie 2010 11:18:00
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <stdio.h>
#define lung 10000000
#define lng 1000

struct gen
{int e,c;} a[lng];

int s[lung];

int main()
{
	int g,w,su,i,j,min;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	su=0;
	for (i=0;i<g;i++)
	{
		scanf("%d%d",&a[i].e,&a[i].c);
		su+=a[i].e;
	}
	s[0]=1;
	for (i=0;i<g;i++)
		for (j=su;j>=0;j--)
			if (s[j])
			{
				int *p=&s[j+a[i].e];
				if (!j) *p= (!(*p) || *p>a[i].c) ?a[i].c : *p;
				else *p= (!(*p) || *p>a[i].c) ? a[i].c : *p;
			}
	min=-1;
	for (i=w;i<=su;i++)
		if (s[i] && (min==-1 || s[i]<min))
			min=s[i];
	printf("%d\n",min);
	fclose(stdout);
	return 0;
}