Pagini recente » Cod sursa (job #2053633) | Cod sursa (job #670896) | Cod sursa (job #2975117) | Cod sursa (job #1567594) | Cod sursa (job #1017803)
#include <fstream>
#define Max(a,b) (a)>(b)?(a):(b)
using namespace std;
int ng,gp[1001],gc[1001],en,et,ems,ct,cs,i,j,pd[1001][5002];
ifstream fin("energii.in");
ofstream fout("energii.out");
int main()
{
fin>>ng>>en;
for(i=0;i<ng;i++)
{
fin>>gp[i]>>gc[i];
et+=gp[i];
ct+=gc[i];
}
ems=et-en;
if(!ems)
{
fout<<ct<<"\n";
return 0;
}
if(ems<0)
{
fout<<"-1\n";
return 0;
}
for(i=gp[0];i<=ems;i++)
pd[0][i]=gc[0];
for(i=1;i<ng;i++)
{
for (j=1;j<gp[i];j++)
pd[i][j]=pd[i-1][j];
for (;j<=ems;j++)
pd[i][j]=Max(pd[i-1][j],gc[i]+pd[i-1][j-gp[i]]);
}
cs=ct-pd[ng-1][ems];
fout<<cs<<"\n";
return 0;
}