Cod sursa(job #2156311)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 8 martie 2018 17:20:16
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#define nmax 1005
#define inf 2000000000
using namespace std;
fstream f1("energii.in", ios::in);
fstream f2("energii.out", ios::out);
int n, g, gr[nmax], ct[nmax], ctmin[2][5001], mini=inf;
int main()
{
    int i, j;
    f1>>n>>g;
    for(i=1; i<=n; i++)
        f1>>gr[i]>>ct[i];

    ctmin[0][0]=0;
    for(j=1; j<=g; j++)
        ctmin[0][j]=inf;
    for(i=1; i<=n; i++)
    {
        for(j=1; j<=g; j++)
           {
               ctmin[i%2][j]=ctmin[1-i%2][j];
               if((j>=gr[i])&&(ctmin[1-i%2][j-gr[i]]+ct[i]< ctmin[i%2][j] )) ctmin[i%2][j]=ctmin[1-i%2][j-gr[i]]+ct[i];
           }
    }
    mini=ctmin[n%2][g];
    for(i=1; i<=n; i++)
        if((mini> ct[i])&&(gr[i]>=g)) mini=ct[i]; ///cazul in care iei doar un obiect cu greutate >=w

    if(mini==inf) f2<<-1;
    else f2<<mini;
    return 0;
}