Pagini recente » lll | Cod sursa (job #1903054) | Cod sursa (job #1736592) | Cod sursa (job #1663893) | Cod sursa (job #2707705)
#include <cstring>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <deque>
#include <queue>
using namespace std;
int coli[]= {0,1,0,-1};
int lini[]= {-1,0,1,0};
struct bob
{
int wg;
int val;
} negru[5009],benis;
long long n,m,ok,s,x,y,v[3][100002],i,j,nr,aux[300][300],k,maxi,x1,x2,mini=999999;
int main()
{
ifstream in("energii.in");
ofstream out("energii.out");
in>>n>>m;
for(i=1; i<=n; i++)
{
in>>negru[i].val>>negru[i].wg;
if(negru[i].wg>maxi)
maxi=negru[i].wg;
s+=negru[i].val;
}
if(s<m)
{
out<<-1;
return 0;
}
for(i=1; i<=n; i++)
for(j=1; j<=maxi; j++)
{
if(j-negru[i].wg>=0)
if(i%2==1)
v[i%2][j]=max(v[0][j],v[0][j-negru[i].wg]+negru[i].val);
else
v[i%2][j]=max(v[1][j],v[1][j-negru[i].wg]+negru[i].val);
else
{
if(i%2==0)
v[i%2][j]=v[1][j];
else
v[i%2][j]=v[0][j];
}
if(v[i%2][j]>=m)
if(j<mini)
mini=j;
}
out<<mini;
return 0;
}