Pagini recente » Cod sursa (job #2143479) | Cod sursa (job #1739962) | Cod sursa (job #1885258) | Cod sursa (job #1160938) | Cod sursa (job #1100022)
/*#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;
}
*/
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int c[1001][5001];
int main()
{int i,j,G,w,e[1001],c1[1001],s1=0;
fin>>G>>w;
for(i=1;i<=G;i++)
{fin>>e[i]>>c1[i];
s1=s1+e[i];}
if (s1<w) fout<<-1;
else
{for(i=0;i<=w;i++)
c[0][i]=20000000;
for(i=0;i<=G;i++)
c[i][0]=20000000;
for(i=1;i<=G;i++)
for(j=1;j<=w;j++)
if (e[i]>=j) c[i][j]=min(c1[i],c[i-1][j]);
else c[i][j]=min(c1[i]+c[i-1][j-e[i]],c[i-1][j]);
fout<<c[G][w];
}
fin.close();
fout.close();
return 0;
}