Pagini recente » Cod sursa (job #1397772) | Cod sursa (job #2577888) | Cod sursa (job #2266113) | Cod sursa (job #1032841) | Cod sursa (job #1852635)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int v[5001];
int p[5001];
int best,DIM,V;
void conv(int n)
{
int nr=0,i=DIM;
while(n)
{
nr=nr*10+n%2;
if(nr==0) i--;
n/=2;
}
int s1=0,s2=0;
while(nr)
{
if(nr%2)
{
s1+=v[i];
s2+=p[i];
if(s1>V) return;
}
i--;
nr/=10;
}
if(s2>best) best=s2;
}
int main()
{int n,i;
f>>DIM>>V;
n=DIM;
for(i=1;i<=n;i++)
f>>v[i]>>p[i];
long long N=pow(2,n);
for(i=1;i<=N;i++)
conv(i);
g<<best;
return 0;
}
//10-20 pct