Pagini recente » Cod sursa (job #3193022) | Cod sursa (job #946515) | Cod sursa (job #2130521) | Cod sursa (job #660411) | Cod sursa (job #1334354)
#include <fstream>
#define nmax 5050
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int nrGen, eNec, cantE[nmax], pret[nmax], PD[1001][nmax];
inline int minim(int x, int y){
return x < y ? x : y;
}
inline int maxim(int x, int y){
return x > y ? x : y;
}
int main()
{int i, j, curent = nmax, S = 0;
f >>nrGen >>eNec;
for(i = 1; i <= nrGen; ++i){
f>> cantE[i]>> pret[i];
S += cantE[i];
}
if(S < eNec){ g<< -1<<'\n'; return 0;}
for(i = 0; i <= nrGen; ++i)
for(j = 1; j <= eNec; ++j)
PD[i][j] = nmax;
PD[0][0] = 0;
for(i = 1; i <= nrGen; ++i){
for(j = 0; j <= eNec; ++j){
PD[i][j] = minim(PD[i - 1][j] , PD[i - 1][maxim(0, j - cantE[i])] + pret[i]);
if(j == eNec)
curent = minim(curent, PD[i][j]);
}
}
g << curent<<'\n';
return 0;
}