Cod sursa(job #2131019)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 14 februarie 2018 10:50:30
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <stdio.h>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>

using namespace std;
FILE *f,*g;

int a[1002][5002];
struct elem
{
    int e,c;
}v[1002];

int main()
{
    int n,E,i,j,lc,lp;
    f=fopen("energii.in","r");
    g=fopen("energii.out","w");
    fscanf(f,"%d",&n);
    fscanf(f,"%d",&E);
    for(i=1;i<=n;i++)
        fscanf(f,"%d %d",&v[i].e,&v[i].c);

        for(j=0;j<=E;j++)
            a[0][j]=2000000000;

    for(i=1;i<=n;i++)
    {
       for(j=1;j<=E;j++)
        {
            if(v[i].e<=j)
            {
                if(v[i].c+a[i-1][j-v[i].e]<a[i-1][j])
                    a[i][j]=v[i].c+a[i-1][j-v[i].e];
                else
                    a[i][j]=a[i-1][j];
            }
            else
                if(a[i-1][j]>v[i].c)
                    a[i][j]=v[i].c;
                else
                    a[i][j]=a[i-1][j];
        }

    }
    if(a[n][E]!=0)
        fprintf(g,"%d",a[n][E]);
    else
        fprintf(g,"-1");
    fclose(f);
    fclose(g);
    return 0;
}