Pagini recente » Cod sursa (job #2525189) | Cod sursa (job #1778340) | Cod sursa (job #403031) | Cod sursa (job #586300) | Cod sursa (job #1666572)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int a[1003][20005];
int g,w;
int energie[1003],cost[1003];
int nr;
int val_ceruta=-1;
int maxim(int a, int b)
{
if(a>b)
return a;
return b;
}
void citire()
{
int i;
fin>>g>>w;
nr=4*w+5;
for(i=1;i<=g;i++)
fin>>energie[i]>>cost[i];
}
void dinamica()
{
int i,j;
for(i=1;i<g;i++)
{
for(j=1;j<cost[i];j++)
a[i][j]=a[i-1][j];
for(j;j<=20002;j++)
{
a[i][j]=maxim(a[i-1][j],energie[i]+a[i-1][j-cost[i]]);
}
}
for(j=1;j<cost[i];j++)
{
a[i][j]=a[i-1][j];
if(a[i][j]>=w)
{
val_ceruta=j;
return;
}
}
for(j;j<=nr;j++)
{
a[i][j]=maxim(a[i-1][j],energie[i]+a[i-1][j-cost[i]]);
if(a[i][j]>=w)
{
val_ceruta=j;
return;
}
}
}
int main()
{
citire();
dinamica();
fout<<val_ceruta;
return 0;
}