Cod sursa(job #935704)

Utilizator sleepaholicNeculaescu Theodor sleepaholic Data 4 aprilie 2013 15:07:26
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;
int costminim[1005][5001];
long long s;
int main()
{
    int g,energie[1005],w,i,cost[1005],y;
    ifstream f1("energii.in");
    ofstream f2("energii.out");
    f1>>g>>w;
    for (i=1;i<=g;++i)
    {
        f1>>energie[i]>>cost[i];
        s+=energie[i];
    }
    if (s<w)
    {
        f2<<"-1\n";
        f1.close();
        f2.close();
        return 0;
    }
    for (i=1;i<=w;++i)
        costminim[0][i]=2000000000;
    for (i=1;i<=g;++i)
        costminim[i][0]=2000000000;
    for (i=1;i<=g;++i)
        for (y=1;y<=w;++y)
        {
            if (energie[i]>=y)
            {
                costminim[i][y]=min(costminim[i-1][y],cost[i]);
            }
            else
            {
                costminim[i][y]=min(costminim[i-1][y],costminim[i-1][y-energie[i]]+cost[i]);
            }
        }
    f2<<costminim[g][w]<<'\n';
    f1.close();
    f2.close();
    return 0;
}