Pagini recente » Cod sursa (job #508931) | Cod sursa (job #2246259) | Cod sursa (job #293225) | Cod sursa (job #171242) | Cod sursa (job #418535)
Cod sursa(job #418535)
#include<fstream.h>
#define u (1<<30)
int e[1100],c[1100],dp[6000];
int main()
{
int n,w,i,wmax=0,j;
ifstream f("energii.in");
ofstream g("energii.out");
f>>n>>w;
for(i=1;i<=n;i++)
f>>e[i]>>c[i];
for(i=1;i<=w;i++)
dp[i]=(1<<30);
for(j=wmax;j>=0;j--)
if(dp[j]!=u)
for(i=1;i<=n;i++)
if(j+e[i]<w)
{
if(dp[j+e[i]]>dp[j]+c[i])
{
dp[j+e[i]]=dp[j]+c[i];
if(wmax<j+e[i])
wmax=j+e[i];
}
}
else
if(j+e[i]>=w)
if(dp[w]>dp[j]+c[i])
{
dp[w]=dp[j]+c[i];
if(wmax<w)
wmax=w;
}
if(dp[w]==u)
g<<"-1";
else
g<<dp[w];
return 0;
}