Cod sursa(job #1068947)

Utilizator ValeraShulghin Valera Valera Data 28 decembrie 2013 23:41:25
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");

long N,W,Cost[10000],Energie[10000],a[10000][10000],s,i,j,mic;

int main()
{
    f>>N>>W;
    s=0;
    for(i=1;i<=N;i++)
    {
        f>>Energie[i]>>Cost[i];
        s=s+Energie[i];
    }

    for(i=0;i<=s;i++)
        a[0][i]=0;

    if (s<W)g<<"-1";
    else
    {
        for(i=1;i<=N;i++)
            for(j=1;j<=s;j++)
                if (j<Cost[i])a[i][j]=a[i-1][j];
                    else
                        if (a[i-1][j]>a[i-1][j-Cost[i]]+Energie[i])
                            a[i][j]=a[i-1][j];
                        else a[i][j]=a[i-1][j-Cost[i]]+Energie[i];

    }
    mic=0;
    for(i=N;i>=1;i--)
        for(j=s;j>=1;j--)
            if (a[i][j]>=W) mic=j;
    g<<mic;
    return 0;
}