Cod sursa(job #1061915)

Utilizator VisanCosminVisan Tudor Cosmin VisanCosmin Data 20 decembrie 2013 14:22:05
Problema Energii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#include <stdlib.h>
int mat[50][50];
int minim(int a,int b)
{
    if(a<b) return a;
    else return b;
}
int main()
{
    int n,w,a[30],b[30],inf=99999,i,j;
    FILE*f;
    f=fopen("energii.in","r");
    fscanf(f,"%d%d",&n,&w);
    for(i=1;i<=n;i++)
        fscanf(f,"%d%d",&a[i],&b[i]);
    fclose(f);
    for(i=0;i<=n;i++)
        for(j=1;j<=w;j++)
            mat[i][j]=inf;
    for(i=1;i<=n;i++)
        for(j=1;j<=w;j++)
            if(a[i]<=j) mat[i][j]=minim(b[i]+mat[i-1][j-a[i]],mat[i-1][j]);
                else mat[i][j]=minim(b[i],mat[i-1][j]);
    printf("%d",mat[n][w]);
    FILE*g;
    g=fopen("energii.out","w");
    if(mat[n][w]!=inf) fprintf(g,"%d",mat[n][w]);
        else fprintf(g,"%d",-1);
    fclose(g);
 return 0;
}