Cod sursa(job #730198)

Utilizator grannyAlexandru Marian Alexandru granny Data 6 aprilie 2012 00:30:11
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
//------------------------------------------------------//
#include "stdio.h"                  

//-----------Directive define---------------------------//

#define infinit 1<<10

//--Variabile globale-----------------------------------//
int g;
int w;
int e[1002];
int c[1002];
int matrice[1002][5002];

FILE *f=fopen("energii.in","r");
FILE *h=fopen("energii.out","w");

//--Functii utilizator----------------------------------//

void citire_date()
{
int i;

fscanf(f,"%d %d",&g,&w);

for (i=1;i<=g;i++)
		fscanf(f,"%d %d",&e[i],&c[i]);
	
}//end citire




int min(int a,int b)
{
	if (a<=b) return a; else return b;
}//end min

void init_matrix()
{
int i;
for (i=0;i<=w;i++)
	matrice[0][i]=infinit;
	
}//end init_matrix


void energii()
{
int i,j;

init_matrix();//initializam prima linie cu infinit ( linia 0)

for (i=1;i<=g;i++)
	for (j=1;j<=w;j++)
			if (j<=e[i])
					matrice[i][j]=min(matrice[i-1][j],c[i]);
			else
					matrice[i][j]=min(matrice[i-1][j],matrice[i-1][j-e[i]]+c[i]);
}//end energii

	


	



int main()
{

citire_date();
energii();

if (matrice[g][w]==infinit)
		fprintf(h,"%d",-1);
else	
		fprintf(h,"%d",matrice[g][w]);
fprintf(h,"\n");
}//end main