Cod sursa(job #1813160)

Utilizator Coroian_DavidCoroian David Coroian_David Data 22 noiembrie 2016 19:12:27
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <cstdio>

using namespace std;

FILE *f, *g;

int n, k, d[5009], mn = 2000000000;

void solve()
{
    f = fopen("energii.in", "r");

    int c, gr, i, j, mx = 0;

    d[0] = 1;

    fscanf(f, "%d%d", &n, &k);

    for(i = 1; i <= n; i ++)
    {
        fscanf(f, "%d%d", &c, &gr);

        for(j = mx; j >= 0; j --)
        {


            if(d[j] != 0)
            {
                if(j + c >= k)
                {
                    if(d[j] + gr < mn)
                        mn = d[j] + gr;
                }

                else
                    if(d[j] + gr < d[j + c] || d[j + c] == 0)
                        d[j + c] = d[j] + gr;
            }
        }

        mx += c;

        if(mx > k - 1)
            mx = k - 1;


    }

    fclose(f);
}

void printFile()
{
    g = fopen("energii.out", "w");

    if(mn == 2000000000)
        mn = 0;

    fprintf(g, "%d\n", mn - 1);

    fclose(g);
}

int main()
{
    solve();

    printFile();

    return 0;
}