Cod sursa(job #982036)

Utilizator andreiiiiPopa Andrei andreiiii Data 8 august 2013 13:06:55
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <cstring>
#include <algorithm>
#define N 5001
#define INF 1<<30
using namespace std;

FILE *fin=fopen("energii.in", "r"), *fout=fopen("energii.out", "w");
 
int d[2][N];
 
int main ()
{
    freopen ("energii.in", "r", stdin);
    freopen ("energii.out", "w", stdout);
    int n, w, i, j, a, b;
    bool k = 0;
    fscanf (fin, "%d%d", &n, &w);
    for (i = 1; i <= w; ++i)
        d[0][i] = INF;
    for (i = 1; i <= n; ++i) {
        fscanf (fin, "%d%d", &a, &b);
        k = !k;
        for (j = 1; j <= w; ++j)
            if (j <= a)
                d[k][j] = min(d[!k][j], b);
            else
                d[k][j] = min(d[!k][j], d[!k][j - a] + b);
    }
    if (d[k][w] == INF)
        fprintf(fout, "-1");
    else
        fprintf(fout, "%d", d[k][w]);
 
}