Cod sursa(job #2468048)

Utilizator stefanpiturStefan Alexandru Pitur stefanpitur Data 5 octombrie 2019 12:10:20
Problema Energii Scor 5
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define GMAX 1001
#define EMAX 5001
#define BIG 1e9
int W[GMAX],P[GMAX],profit[EMAX];
int main()
{
    FILE *fin, *fout;
    int g,E,i,j,ans;
    fin = fopen("energii.in","r");
    fout = fopen("energii.out","w");
    fscanf(fin,"%d\n%d\n",&g,&E);
    for(i=0;i<g;i++)
        fscanf(fin,"%d %d",&P[i],&W[i]);
    for(j=1;j<=E;j++)
        profit[j] = -1;
    ans = BIG;
    for(i=0;i<g;i++)
        for(j=E;j>=0;j--)
            if(profit[j]!=-1){
                if(j+P[i] >= E)
                    ans = ans < (profit[j]+W[i]) ? ans : (profit[j]+W[i]);
                else if(profit[j]+W[i] < profit[j+P[i]])
                    profit[j+P[i]] = profit[j] + W[i];
            }
    if(ans == BIG)
        fprintf(fout,"-1");
    else
        fprintf(fout,"%d",ans);
    fclose(fin);
    fclose(fout);
    return 0;
}