Pagini recente » Cod sursa (job #2553766) | Cod sursa (job #145930) | Cod sursa (job #524549) | Cod sursa (job #1731102) | Cod sursa (job #1007124)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
typedef struct{
int indice;
int gr;
int val;
}obiect;
vector<obiect> v;
int n, G, i, viz[5001], gr, val, max_val=0, val_aux, gr_aux;
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+v[i].gr;
if( valid(i, gr_aux) )
{
viz[i]=1;
val_aux = val + v[i].val;
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++)
{
obiect aux;
fin>>aux.gr>>aux.val;
aux.indice=i+1;
v.push_back(aux);
}
bkt(1,0,0);
fout<<max_val;
return 0;
}