Pagini recente » Cod sursa (job #461849) | Cod sursa (job #2043271) | Cod sursa (job #2747037) | Cod sursa (job #1797586) | Cod sursa (job #1099867)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int main()
{ int mini=0,valmax=0,x=0,smax=0,i,G,w,s1[100000]={0},s[100000]={0},j,alege[100000]={0},e[1001],c[1001];
fin>>G>>w;
for(i=1;i<=G;i++)
{fin>>e[i]>>c[i];
smax=smax+e[i];}
if (smax<w) fout<<"-1";
else
{ //valmax=0;
for(i=1;i<=G;i++)
{ x=e[i];
s1[x]=1;
//valmax=valmax+x;
for(j=1;j<=smax;j++)
{if (s[j]==1) {s1[j+x]=1;}
for(j=1;j<=smax;j++)
{ if (s1[j]==1&&s[j]==0)
{ s[j]=1;
alege[j]=alege[j-x]+c[i];
s1[j]=0;
}
else if (s1[j]==1&&s[j]==1)
{alege[j]=min(alege[j],alege[j-x]+c[i]);
s1[j]=0;
}
}
}
}
mini=2000000000;
for (i=w;i<=smax;i++)
if (s[i]==1&&mini>alege[i]) mini=alege[i];
}
fout<<mini;
fin.close();
fout.close();
return 0;
}