Cod sursa(job #1087688)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 19 ianuarie 2014 19:09:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include<algorithm>
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");

int n,g,w[1005], c[1005],d[1005][10005],i,j,minim,s,e,s1;

int main () {

    fin>>n>>e;
    for (i=1;i<=n;i++){
        fin>>w[i]>>c[i];
        s+=w[i];
        s1+=c[i];
    }
    if (s<e)
        fout<<"-1\n";
    else
        if (s==e)
            fout<<s1<<"\n";
        else {
            if (s>10000)
                s=10000;
            for (j=0;j<=s;j++)
                d[1][j]=s1;
            d[1][w[1]]=c[1];

            for (i=2;i<=n;i++) {

                for (j=0;j<=s;j++)
                    if (w[i]<j)
                        d[i][j] = min (d[i-1][j], d[i-1][j-w[i]]+c[i]);
                    else
                        if (j==w[i])
                            d[i][j]=min (c[i],d[i-1][j]);
                        else
                            d[i][j] = d[i-1][j];
            }
            minim=s1;
            for (i=e;i<=s;i++)
                if (d[n][i]<minim)
                    minim=d[n][i];

            fout<<minim<<"\n";
        }


    return 0;
}