Cod sursa(job #871147)

Utilizator beldeabogdanBogdan Beldea beldeabogdan Data 4 februarie 2013 15:28:58
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <fstream>
#define minim(a,b) (a<b)?a:b
using namespace std;

ifstream f("energii.in");
ofstream output("energii.out");
int g,energmax,i,j;
int energ,cost;
int a[100000]; // a[energie] = cost
int iesit = 2000000000;
int main() {
    for(i=0;i<=99999;i++) a[i] = 2000000000;
    f >> g >> energmax;
    for (i=1;i<=g;i++) {
        f >> cost >> energ;
        for (j=energmax; j>= 1 ; j--) {
            if (a[j]!= 2000000000) {
                if (j+energ < energmax) {
                    a[j+energ] = minim(a[j+energ],a[j]+cost);
                } else {
                    iesit = minim(iesit,a[j]+cost);
                }
            }
        }
        if (a[energ] != 0) a[energ] = minim(a[energ],cost);
        else a[energ] = cost;
    }
    for (i=energmax;i<=iesit;i++) if (a[i]!=2000000000) iesit = i;
    if (iesit > 0) output << iesit;
    else output << -1;
    return 0;
}