Pagini recente » Cod sursa (job #1295821) | Cod sursa (job #972615) | Cod sursa (job #671325) | Cod sursa (job #1662066) | Cod sursa (job #862842)
Cod sursa(job #862842)
#include<fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int ct[10005],d[10005],c[10005],ok,i,j,n,w,min1,max1,maxt;
int main()
{
f>>n>>w;
for(i=1;i<=n;i++)
f>>d[i]>>c[i];
maxt=0;
do
{
ok=1;
for(i=1;i<=n-1;i++)
if(c[i]>c[i+1])
{
c[0]=c[i];
c[i]=c[i+1];
c[i+1]=c[0];
d[0]=d[i];
d[i]=d[i+1];
d[i+1]=d[0];
ok=0;
}
}
while(ok==0);
max1=0;
for(i=1;i<=n;i++)
{
for(j=max1;j>=0;j--)
if((j==0||ct[j]!=0)&&(ct[j+d[i]]>ct[j]+c[i]||ct[j+d[i]]==0))
{
ct[j+d[i]]=ct[j]+c[i];
if(j+d[i]>max1)
max1=j+d[i];
}
if(max1>=w)
{
if(maxt<max1)
maxt=max1;
max1=w;
}
}
min1=35000;
if(maxt==0)
g<<"-1";
if(maxt==w)
g<<ct[w];
for(i=w;i<=maxt;i++)
if(min1>ct[i]&&ct[i]!=0)
min1=ct[i];
g<<min1;
return 0;
}