Cod sursa(job #1067826)

Utilizator DenisacheDenis Ehorovici Denisache Data 27 decembrie 2013 16:01:36
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<stdio.h>
FILE *f=fopen("energii.in","r");
FILE *g=fopen("energii.out","w");

#define maxn 1003
#define maxg 5003

int greutate[maxn],profit[maxn],a[maxn][maxg];
int i,j,n,gr;

inline int min(int a, int b)
{
    if (a<b) return a;
    return b;
}
int main()
{
    fscanf(f,"%d %d",&n,&gr);
    for (i=0;i<=n;i++)
    {
        for (j=1;j<=gr;j++)
        {
            a[i][j]=2e+9;
        }
    }
    for(i=1;i<=n;i++) fscanf(f,"%d %d",&greutate[i],&profit[i]);
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=gr;j++)
        {
            if (j>=greutate[i]) a[i][j]=min(a[i-1][j],a[i-1][j-greutate[i]]+profit[i]);
            else a[i][j]=min(a[i-1][j],profit[i]);
        }
    }
    if (a[n][gr]!=2e+9) fprintf(g,"%d",a[n][gr]);
    else fprintf(g,"-1");
    return 0;
}