Cod sursa(job #1495030)

Utilizator tudortarniceruTudor Tarniceru tudortarniceru Data 2 octombrie 2015 12:56:17
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, g, da;
int w[5005], p[5005];
int c[10005], q[10005];
int maxx;
int main() {
    maxx = 10000000;
    fin >> n >> g;
    for (int i = 1; i <= n; ++i) {
        fin >> w[i] >> p[i];
    }
    q[0] = 1;
    for (int i = 0; i <= n; ++i) {
        for (int j = g; j >= 0; --j) {
            if (q[j] != 0) {
                if (j + w[i] >= g) {
                    if (c[j] + w[i] < maxx) {
                        maxx = c[j] + p[i];
                        da = 1;
                    }
                }
                else {
                    if (c[j] + p[i] < c[j + w[i]]) {
                        c[j + w[i]] = c[j] + p[i];
                        q[j + w[i]] = 1;
                    }
                }
            }
        }
    }
    if (da == 0) {
        fout << "-1";
    }
    else {
        if (c[g] < maxx) {
            maxx = c[g];
        }
        fout << maxx;
    }
    fout.close();
    return 0;
}