Cod sursa(job #1775114)

Utilizator mihai.alphamihai craciun mihai.alpha Data 9 octombrie 2016 21:04:22
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <bits/stdc++.h>
using namespace std;

int r[5002];

int main()  {
    FILE *fin = fopen("energii.in", "r");
    FILE *fout = fopen("energii.out", "w");
    int n, k, maxi, s = 0, x, c;

    fscanf(fin,"%d %d", &n, &k);
    r[0] = 1; maxi = INT_MAX;
    for (int i = 1; i <= n; ++i)
    {
        fscanf(fin,"%d %d", &x, &c);
        for (int j = s; j >= 0; j--)
            if (r[j] != 0)  {
                if (j + x >= k)  {
                    if (r[j] + c < maxi)
                        maxi = r[j] + c;
                }
                else if (r[j] + c < r[j + x] || r[j + x] == 0)
                    r[j + x] = r[j] + c;
            }

        s += x;
        if (s > k - 1)
            s = k - 1;
    }

    if (maxi == INT_MAX)
        maxi = 0;
    fprintf(fout,"%d\n", maxi - 1);
    return 0;
}