Cod sursa(job #1825491)

Utilizator Vlad_317Vlad Panait Vlad_317 Data 9 decembrie 2016 11:25:26
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <cstdio>
#include <algorithm>
using namespace std;

const int INF = 9999999;

int e[1001], c[1001];
int d[1001][5001];
int main()
{
    FILE *fin, *fout;

    fin = fopen("energii.in", "r");
    fout = fopen("energii.out", "w");

    int n, w;

    fscanf(fin, "%d%d", &n, &w);

    for(int i = 1; i <= n; i++)
        fscanf(fin, "%d%d", &e[i], &c[i]);

    /// rucsac

    for(int i = 0; i <= w; i++)
        d[0][i] = INF;

    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= w; j++)
        {
            if(j - e[i] <= 0 && d[i - 1][j - e[i]] < INF)
            {
                if(j - e[i] <= 0)
                    d[i][j] = min(c[i], d[i - 1][j]);
                else
                    d[i][j] = min(d[i - 1][j], d[i][j - e[i]] + c[i]);
            }
            else
                d[i][j] = INF;
        }
    }

    if(d[n][w] != INF)
        fprintf(fout, "%d", d[n][w]);
    else
        fprintf(fout, "-1");

    return 0;
}