Cod sursa(job #2276956)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 5 noiembrie 2018 17:28:48
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#include <limits.h>

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

int n, g, i, j, ok, minim, w[1005], p[1005], d[5005];

int main()
{
    fin >> n >> g;
    for (i=1; i<=n; i++){
        fin >> w[i] >> p[i];
    }
    minim = INT_MAX;
    ok = 0;
    d[0] = 1;
    for (i=1; i<=n; i++){
        for (j=g; j>=0; j--){
            if (d[j] != 0){
                if (j + w[i] < g){
                    if(d[j+w[i]] == 0)
                        d[j+w[i]] = d[j]+p[i];
                    else
                        d[j+w[i]] = min(d[j+w[i]], d[j]+p[i]);
                }
                else{
                    minim = min(minim, d[j] + p[i]);
                    ok = 1;
                }
            }
        }
    }
    if (ok == 1)
        fout << minim - 1;
    else
        fout << "-1";
    return 0;
}