Cod sursa(job #2411397)

Utilizator MariusblockMoga Marius-Ioan Mariusblock Data 20 aprilie 2019 18:53:52
Problema Energii Scor 45
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

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

const int inf = 1<<30;

int v[1000006];
int auxv[1000006];
int gc[10005];
int ge[10005];

int main()
{
    int n,m,i,j,sum = 0,minim = inf;
    fin>>n>>m;
    for(i = 1; i <= n; i++){
        fin>>gc[i]>>ge[i];
        sum+=gc[i];
    }
    if(sum < m){
        fout<<"-1"<<endl;
        return 0;
    }
    for(i = 1; i <= sum; i++){
        v[i] = auxv[i] = inf;
    }
    for(i = 1; i <= n; i++){
        for(j = 1; j <= sum; j++){
            if(j < gc[i]){
                auxv[j] = auxv[j];
            }else{
                auxv[j] = min(v[j],v[j-gc[i]] + ge[i]);
            }
        }
        for(j = 1; j <= sum; j++){
            v[j] = auxv[j];
        }
    }
    for(i = m; i <= sum; i++){
        minim = min(minim,v[i]);
    }
    fout<<minim<<endl;
    return 0;
}