Pagini recente » Cod sursa (job #1740696) | Cod sursa (job #2047518) | Cod sursa (job #2300250) | Cod sursa (job #570481) | Cod sursa (job #1989637)
#include <iostream>
#include <cstdio>
using namespace std;
struct generator
{
short int cantitate,cost;
};
generator v[1001];
short int vg[15001];//eficienta de pe pozitia respectiva
int main()
{
freopen("energii.in","r",stdin);
//freopen("energii.out","w",stdout);
int n,necesar,max=0;
cin>>n>>necesar;
for (short int i=1;i<=n;i++)
{
cin>>v[i].cantitate>>v[i].cost;
max+=v[i].cantitate;
}
if (max<necesar)
{
cout<<-1<<endl;
return 0;
}
max=0;
int j;
for (short int i=1;i<=n;i++)
{
for (j=max;j>=1;j--)
if (vg[j]!=0)
if (j+v[i].cost<15000)
{
if (vg[j+v[i].cost]<vg[j]+v[i].cantitate)
vg[j+v[i].cost]=vg[j]+v[i].cantitate;
if (j+v[i].cost>max)
max=j+v[i].cost;
}
if (max<v[i].cost)
max=v[i].cost;
if (vg[v[i].cost]<v[i].cantitate)
vg[v[i].cost]=v[i].cantitate;
}
short int i=1;
while (1)
{
if (vg[i]>=necesar)
{
cout<<i;
return 0;
}
i++;
}
}