Pagini recente » Cod sursa (job #3243943) | Cod sursa (job #2655993) | Cod sursa (job #144525) | Cod sursa (job #1117319) | Cod sursa (job #730198)
Cod sursa(job #730198)
//------------------------------------------------------//
#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