Cod sursa(job #1605856)

Utilizator dorin31Geman Dorin Andrei dorin31 Data 19 februarie 2016 15:56:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

#define gMax 1001
#define wMax 5001
#define oo 1<<30

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

struct gen { int e,c;}v[gMax];
int d[2][wMax];
int g,w;

void citire()
{
    fin>>g>>w;
    for (int i=1; i<=g; ++i)
        fin>>v[i].e>>v[i].c;
}

void pd()
{
    int line=0;
    for (int i=1; i<=w; ++i)
        d[0][i]=oo;
    for (int i=1; i<=g; ++i, line=1-line)
        for (int j=1; j<=w; ++j)
        {
            d[1-line][j]=d[line][j];
            if (j>=v[i].e)
                d[1-line][j]=min(d[1-line][j],d[line][j-v[i].e]+v[i].c);
            else
                d[1-line][j]=min(d[1-line][j],v[i].c);
        }
    if (d[line][w]<oo) fout<<d[line][w];
    else fout<<-1;
}

int main()
{
    citire();
    pd();
    return 0;
}