Pagini recente » Cod sursa (job #651487) | Cod sursa (job #1077837) | Cod sursa (job #2056456) | Cod sursa (job #1283528) | Cod sursa (job #159232)
Cod sursa(job #159232)
//energii
#include<fstream.h>
int min[5002][1002];
int main()
{int i,j, gen,w,en[1002], c[1002], sum1=0,cmin=32000,add,a;
ifstream f("energii.in");
ofstream g("energii.out");
f>>gen>>w;
for(i=1;i<=gen;++i)
{f>>en[i]>>c[i];
sum1+=en[i];
if(cmin>c[i])
{ cmin=c[i];
add=i;}
if(cmin==c[i])
if(en[i]>en[add])
add=i;
}
if(sum1<w)
{g<<"-1"<<'\n';
f.close();
g.close();
return 0;}
for(i=1;i<=en[add];i++)
{min[i][0]=c[add];
min[i][add]=1;}
for(i=en[add]+1;i<=w;i++)
{ cmin=32000;
for(j=1;j<=gen;++j)
{a=i-en[j]; if(a<0) a=0;
if(min[a][j]==0)
if(min[a][0]+c[j]<cmin)
{cmin=min[a][0]+c[j];
add=j;
}
}
min[i][0]=cmin;
min[i][add]=1;
a=i-en[add];
if(a<0) a=0;
for(j=1;j<=gen;++j)
if(min[a][j]==1)
min[i][j]=1;
}
g<<min[w][0]<<'\n';
f.close();
g.close();
return 0;
}