Cod sursa(job #1007124)

Utilizator costel93FMI - Dumea Eduard Constantin costel93 Data 8 octombrie 2013 12:34:39
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#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;
}