Pagini recente » Cod sursa (job #2491234) | Cod sursa (job #1223653) | Cod sursa (job #2644162) | Cod sursa (job #2289777) | Cod sursa (job #879621)
Cod sursa(job #879621)
#include <fstream>
using namespace std;
ifstream fin("energii.in");
#define NMAX 1005
#define NMAX2 11000000
ofstream fout("energii.out");
int n,W,profit[NMAX2],sum,sum2;
struct data{
int power,cost;
};
data v[NMAX];
void read()
{
int i;
fin>>n>>W;
for(i=1;i<=n;i++)
{
fin>>v[i].power>>v[i].cost;
sum+=v[i].cost;
sum2+=v[i].power;
}
}
int main()
{
read();
if(sum2<W)
{
fout<<-1;
return 0;
}
int aux,i,j,poz=0;
for(i=1;i<=n;i++)
{
aux=sum-v[i].cost;
if(poz)
aux=poz;
for(j=aux;j;j--)
{
if(profit[j] && profit[j]+v[i].power > profit[j+v[i].cost])
{
profit[j+v[i].cost] = profit[j] + v[i].power;
if(profit[j+v[i].cost] >= W) poz= j+v[i].cost;
}
}
if(v[i].power > profit[v[i].cost])
{
profit[v[i].cost] = v[i].power;
if(profit[v[i].cost] >= W) poz= v[i].cost;
}
}
for(i=1;i<=NMAX2;i++)
{
//fout<<profit[i]<<endl;
//fout<<W;
if(profit[i]>=W)
{
fout<<i;
return 0;
}
}
}