Cod sursa(job #1007127)

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