Pagini recente » Cod sursa (job #1115289) | Cod sursa (job #2082241) | Cod sursa (job #993185) | Cod sursa (job #2872899) | Cod sursa (job #2367672)
#include <iostream>
#include <fstream>
using namespace std;
ofstream fo("energii.out");
ifstream fi("energii.in");
int nrGen;
int Wnecesari;
int Cost[5005];
int Produs[5005];
int dp[100004];
/// dp[i] cantitatea minina pentru i W
int main()
{
fi>>nrGen>>Wnecesari;
for(int i=1; i<=nrGen; i++)
fi>>Produs[i]>>Cost[i];
for(int i=1; i<=Wnecesari+10001; i++)
dp[i]=-1;
for(int i=1; i<=nrGen; i++)
{
for(int j=0; j<=Wnecesari; j++)
{
if( dp[j+Produs[i]]> dp[j]+Cost[i] || dp[j+Produs[i]]==-1 )
if(dp[j]!=-1)
dp[j+Produs[i]]=dp[j]+Cost[i];
}
}
int minim=1000000000;
for(int i=Wnecesari; i<=Wnecesari+10000; i++)
if(dp[i]!=-1)
minim=min(minim,dp[i]);
if(minim==1000000000)
fo<<-1;
else
fo<<minim;
fi.close();
fo.close();
return 0;
}