Pagini recente » Cod sursa (job #953228) | Cod sursa (job #2434615) | Cod sursa (job #358074) | Cod sursa (job #966899) | Cod sursa (job #2367649)
#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[10004];
/// 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+1001; 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+1000; i++)
if(dp[i]!=-1)
minim=min(minim,dp[i]);
if(minim==1000000000)
fo<<-1;
else
fo<<minim;
fi.close();
fo.close();
return 0;
}