Cod sursa(job #531175)

Utilizator tudorsTudor Siminic tudors Data 9 februarie 2011 00:30:30
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>
#define MAXIM 1001*10001
using namespace std;
int COST[5001];
int i,j,w,gen,en,co;
FILE *f,*g;

int main()
{
	f=fopen("energii.in","r");
	g=fopen("energii.out","w");
	fscanf(f,"%d %d",&gen,&w);
	COST[0]=0;
	for (i=1;i<=w;i++)
		COST[i]=MAXIM;
	for (i=1;i<=gen;i++)
	{
		fscanf(f,"%d %d",&en,&co);
		for (j=w;j>=0;j--)
			if (COST[j]!=MAXIM)
			{
				if (COST[j]+co<COST[j+en] && j+en<=w)
					COST[j+en]=COST[j]+co;
				else
					if (COST[j]+co<COST[w] && j+en>w)
						COST[w]=COST[j]+co;
			}
	}
	if (COST[w]!=MAXIM)
		fprintf(g,"%d",COST[w]);
	else
		fprintf(g,"%d",-1);
	fclose(f);
	fclose(g);
	return 0;
}