Cod sursa(job #1589542)

Utilizator Marius7122FMI Ciltea Marian Marius7122 Data 4 februarie 2016 09:50:15
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>
#define inf 999999
int i,j,w,g,eg[1001],cg[1001],sol[1001][5001];

int min(int a , int b)
{
    if(a>b)
        return b;
    return a;
}
int main()
{
    FILE*f1,*f2;
    f1=fopen("energii.in","r");
    f2=fopen("energii.out","w");
    fscanf(f1,"%d%d",&g,&w);
    for(i=1;i<=g;i++)
        fscanf(f1,"%d%d",&eg[i],&cg[i]);
    for(i=0;i<=g;i++)
        for(j=0;j<=w;j++)
            sol[i][j]=inf;

    for(i=1;i<=g;i++)
        for(j=0;j<=w;j++)
            if(j<=eg[i])
                sol[i][j]=min(sol[i-1][j],cg[i]);
            else
                sol[i][j]=min(sol[i-1][j-eg[i]]+cg[i],sol[i-1][j]);

    if(sol[g][w]==inf)
        fprintf(f2,"-1");
    else
        fprintf(f2,"%d",sol[g][w]);
    return 0;
}