Pagini recente » Cod sursa (job #1384154) | Cod sursa (job #344675) | Cod sursa (job #903065) | Cod sursa (job #992413) | Cod sursa (job #767216)
Cod sursa(job #767216)
#include <fstream>
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
struct energ {
int cost;
int productie;
};
int v[3][500009];
energ a[1200];
int main()
{
int n,w,i,j,costmin=0,prd=0;
long long costmax=0;
fin>>n>>w;
for (i=1;i<=n;i++)
{
fin>>a[i].productie>>a[i].cost;
costmax+=a[i].cost;
prd+=a[i].productie;
}
if (prd<=w)
{
if (prd==w)
fout<<costmax;
else
fout<<-1;
}
else
{
costmin=costmax+1;
for(i=1;i<=n;i++)
{
for(j=0;j<=costmax;j++)
{
if (j>=a[i].cost)
{
v[i%2][j]=max(v[!(i%2)][j],v[!(i%2)][j-a[i].cost]+a[i].productie);
if (j<costmin && v[i%2][j]>=w )
costmin=j;
}
else
v[i%2][j]=v[!(i%2)][j];
}
//for(j=0;j<=w;j++)
// v[0][j]=v[1][j];
}
fout<<costmin;
}
return 0;
}