Pagini recente » Cod sursa (job #1849282) | Cod sursa (job #220711) | Cod sursa (job #3205390) | Cod sursa (job #1197851) | Cod sursa (job #159241)
Cod sursa(job #159241)
//energii
#include<fstream.h>
char min[5002][1002];
int miin[5002];
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++)
{miin[i]=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(miin[a]+c[j]<cmin)
{cmin=miin[a]+c[j];
add=j;
}
}
miin[i]=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<<miin[w]<<'\n';
f.close();
g.close();
return 0;
}