Cod sursa(job #1503739)

Utilizator elevenstrArina Raileanu elevenstr Data 16 octombrie 2015 20:43:16
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
#define INF 20000
#define maxi(a,b) (a>b?a:b)
#define mini(a,b) (a>b?b:a)
int e[1003],c[1003];
int mat[10000003];
int main()
{
    int g,w,su=0,i,j;
    in>>g>>w;
    for(i=1; i<=g; i++)
    {
        in>>e[i]>>c[i];
        su+=e[i];
    }
    if(su<w)out<<-1;
    else
    {
            for(j=0; j<=su; j++)
                mat[j]=INF;
        for(i=0; i<=e[1]; i++)
            mat[i]=c[1];

        for(i=2; i<=g; i++)
            for(j=su; j>=0; j--)
            {
                if(j-e[i]>0)mat[j]=mini(mat[j],mat[j-e[i]]+c[i]);
                else mat[j]=mini(c[i],mat[j]);
            }


        out<<mat[w];
    }

    return 0;
}