Cod sursa(job #993553)

Utilizator nicuvladNicu Vlad nicuvlad Data 4 septembrie 2013 01:03:52
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 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 ()
{
    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]);
 
}