Pagini recente » Cod sursa (job #2187220) | Cod sursa (job #2668852) | Cod sursa (job #1472004) | Cod sursa (job #2148353) | Cod sursa (job #1503074)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int v[3][5001];
int En[1001];
int Cost[1001];
int sInf;
int G,W;
int cmin1;
bool excesiv=false;
int main()
{
int i,j;
f>>G>>W;
for(i=1;i<=G;i++)
{
f>>En[i]>>Cost[i];
sInf+=Cost[i];
}
for(i=1;i<=W;i++)
v[1][i]=sInf+1;
int cmin1=sInf+1;
v[2][0]=1;
int gmax1;
gmax1=0;
int gmax11;
for(i=1;i<=G;i++)
{
gmax11=gmax1;
for(j=gmax1;j>=0;j--)
if(v[2][j]!=0)
{
if(j+En[i]<=W)
{
if(j+En[i]>gmax11)
gmax11=j+En[i];
if(v[1][j]+Cost[i]<v[1][j+En[i]])
{
v[1][j+En[i]]=v[1][j]+Cost[i];
v[2][j+En[i]]=1;
}
}
else{
excesiv=true;
if(v[1][j]+Cost[i]<cmin1)
cmin1=v[1][j]+Cost[i];}
}
gmax1=gmax11;
}
cmin1=min(cmin1,v[1][W]);
if(excesiv==false && v[2][W]==0)
g<<"-1";
else
g<<cmin1;
/*for(i=1;i<=W;i++)
g<<v[1][i]<<' ';*/
f.close();
g.close();
return 0;
}