Cod sursa(job #2434247)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 1 iulie 2019 12:30:29
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <set>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

int costM[1005][5005];

int main()
{
    int n, need;
    fin >> n >> need;

    int minn = 20001000;
    for(int i = 1; i <= n; ++i){
        int cant, cost;
        fin >> cant >> cost;

        if(cant > 5000)
            cant = 5000;

        if(i == 1)
            costM[1][cant] = cost;
        else {
            costM[i][cant] = cost;
            for(int j = cant + 1; j <= 5000; ++j)
            {
                if(costM[i - 1][j - cant] != 0){
                    costM[i][j] = costM[i - 1][j - cant] + cost;
                    if(j >= need)
                        minn = min(minn, costM[i][j]);
                }
            }
        }
        if(cant >= need)
            minn = min(minn, cost);
    }

    fout << (minn == 20001000 ? -1 : minn) << '\n';
    return 0;
}