Pagini recente » Borderou de evaluare (job #2116792) | Cod sursa (job #1191054) | Cod sursa (job #2656866) | Cod sursa (job #322758) | Cod sursa (job #1007127)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int n, G, i, viz[5001], gr, val, max_val=0, val_aux, gr_aux, gr_ob[5001], val_ob[5001];
bool valid(int i, int gr_aux)
{
if(viz[i]==0 && gr_aux <=G)
return 1;
else
return 0;
}
void bkt(int k, int gr, int val)
{
int i;
for(i=0;i<n;i++)
{
gr_aux = gr+gr_ob[i];
if( valid(i, gr_aux) )
{
viz[i]=1;
val_aux = val + val_ob[i];
if( val_aux > max_val)
max_val = val_aux;
bkt(k+1 ,gr_aux, val_aux);
viz[i] = 0;
}
}
}
int main()
{
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
fin>>n>>G;
for(i=0;i<n;i++)
fin>>gr_ob[i]>>val_ob[i];
bkt(1,0,0);
fout<<max_val;
return 0;
}