Cod sursa(job #596341)

Utilizator maritimCristian Lambru maritim Data 16 iunie 2011 22:31:30
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>

#define MaxN 100100
#define INF 1000100

int W[MaxN];
int G;
int Wacc;
int a;
int b;
int MIN = INF;

int main()
{
	FILE *f = fopen("energii.in","r");
	FILE *g = fopen("energii.out","w");
	
	fscanf(f,"%d %d",&G,&Wacc);
	for(int i=1;i<=G;i++)
	{
		fscanf(f,"%d %d",&a,&b);
		for(int j=Wacc;j;j--)
			if(W[i])
				if(!W[i + a] || W[i + a] > W[i] + b)
					W[i + a] = W[i] + b;
		if(!W[a] || W[a]>b)
			W[a] = b;
	}
	for(int i=Wacc;i<MaxN;i++)
		if(W[i] && W[i] < MIN)
			MIN = W[i];
	if(MIN == INF)
		fprintf(g,"-1");
	else
		fprintf(g,"%d",MIN);
	
	fclose(g);
	fclose(f);
	return 0;
}