Pagini recente » Cod sursa (job #3282446) | Cod sursa (job #2171424) | Cod sursa (job #98547) | Cod sursa (job #1477043) | Cod sursa (job #1087580)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int pret[5010],putere[5010];
int n,puterenecesara,putererespectiva,pretulminim;
void knapsack(){
int cc[5010] , cp[5010];
cp[0] = 0;
for(int i=1;i<=puterenecesara;i++)
cp[i] = 1000000000;
for(int i=1;i<=n;i++)
{
cc[0] = 0;
for(int j=1;j<=puterenecesara;j++)
{
cc[j] = cp[j];
if(j <= putere[i] && cc[j]>pret[i])
cc[j] = pret[i];
if(j>=putere[i] && cc[j] > cp[j-putere[i]]+pret[i])
cc[j] = cp[ j - putere[i] ] + pret[i];
}
for(int j = 0 ; j <= puterenecesara ; j++)
cp[j] = cc[j];
}
fout << cc[puterenecesara];
}
int main(){
fin >> n;
fin >> puterenecesara;
for(int i=1 ; i <= n ; i++)
fin >> putere[i] >> pret[i];
knapsack();
return 0;
}