Cod sursa(job #2130971)

Utilizator bodea.georgianaBodea Georgiana bodea.georgiana Data 14 februarie 2018 09:48:17
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 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];

/*bool criteriu (elem p, elem q)
{
    if(p.e!=q.e)
        return (p.e<q.e);
    else
        if(p.c!=q.c)
            return (p.c<q.c);
}*/

int main()
{
    int n,E,i,j;
    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(i=0;i<=n;i++)
        for(j=0;j<=E;j++)
            a[i][j]=999999999;*/
    i=1;
    for(j=1;j<=E;j++)
        if(v[i].e>=j)
            a[i][j]=v[i].c+a[i-1][v[i].e-j];

    for(i=2;i<=n;i++)
    {
        for(j=1;j<=E;j++)
        {
            if(v[i].e>=j)
            {
                if(v[i].c+a[i-1][v[i].e-j]<a[i-1][j]||a[i-1][j]==0)
                    a[i][j]=v[i].c+a[i-1][v[i].e-j];
                else
                    a[i][j]=a[i-1][j];
            }
            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;
}