Cod sursa(job #557885)

Utilizator lau08Laurentiu Capatina lau08 Data 16 martie 2011 22:33:21
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
#define GMax 1002
#define WMax 5002
FILE *f=fopen("energii.in","r");
FILE *g=fopen("energii.out","w");
int G,W,C[WMax][GMax];
int E[GMax],Cost[GMax];

void Completare(int i,int j)
{int k;
k = i - E[j];
if(k >= 1 && C[k][j-1] + Cost[j] < C[i][j-1]) 
		{C[i][j] = Cost[j] + C[k][j-1]; return;}
	else 
		if(k <= 0 && Cost[j] < C[i][j-1])
			{C[i][j] = Cost[j]; return; }
		else
			{C[i][j]=C[i][j-1]; return; }
}

void Read()
{int i;
fscanf(f,"%d %d",&G,&W);
for(i=1;i<=G;i++)
	fscanf(f,"%d %d",&E[i],&Cost[i]);
fclose(f);
}

int main()
{int i,j;
Read();
for(i = 1 ;i <= W; i++)
	C[i][0] = 10001;
	
	for(i = 1 ;i <= W; i++)	
		for(j=1;j<=G;j++)
			Completare(i,j);
	
	if(C[W][G]==10001)
		fprintf(g,"-1\n");
	else
	fprintf(g,"%d\n",C[W][G]);
	fclose(g);
return 0;
}