Cod sursa(job #995064)

Utilizator ludacrivasilii teodorovici ludacri Data 7 septembrie 2013 11:08:46
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 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]);
  
}