Cod sursa(job #1701876)

Utilizator dsergiu05Sergiu Druga dsergiu05 Data 14 mai 2016 12:26:31
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>

using namespace std;

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

const int nmax=1000, smax=5000, inf=(1<<30)-1;
int v[nmax+1], d[2*smax+1], c[nmax+1];

int main () {
    int n, s;
    fin>>n>>s;

    for (int i=1; i<=n; i++) {
        fin>>v[i]>>c[i];
    }
    d[0]=0;
    for (int i=1; i<=2*smax; i++) {
        d[i]=inf;
    }
    for (int i=1; i<=n; i++) {
        for (int j=2*smax; j>=v[i]; j--) {
            if (c[i]+d[j-v[i]]<d[j]) {
                d[j]=c[i]+d[j-v[i]];
            }
        }
    }
    int sol=2*smax+1;
    for (int i=s; i<=2*smax; i++) {
        if (d[i]<sol) {
            sol=d[i];
        }
    }
    if (sol==2*smax+1) {
        fout<<"-1\n";
    } else {
        fout<<sol<<"\n";
    }
    return 0;
}