Cod sursa(job #1087682)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 19 ianuarie 2014 19:01:37
Problema Energii Scor 45
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],d1[10000005],d2[10000005],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 {
            for (j=0;j<=s;j++)
                d1[j]=s1;
            d1[w[1]]=c[1];

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

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

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


    return 0;
}