Cod sursa(job #628355)

Utilizator SelonyEcho Slam Selony Data 1 noiembrie 2011 10:50:22
Problema Problema rucsacului Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<iostream>
#include<fstream>
using namespace std;
int n,G,x[10],maxim[10],pmax,nr;
struct obiect{
	int g,p;
};
	obiect a[10];
	
	void back(int i, int g, int p){
		int gnou,pnou;
		for(int j=x[i-1]+1; j<=n; j++)
		{
			x[i] = j;
			gnou = g + a[j].g;
			pnou = p+ a[j].p;
			if(gnou<=G)
			{
				if(pnou>pmax){
					pmax=pnou;
					nr = i;
					for(int k=1; k<=i; k++)
						maxim[k] = x[k];
				}
				back(i+1,gnou,pnou);
			}
		}
		
	}
int main(){
	ifstream fin("rucsac.in");
	ofstream fout("rucsac.out");
	fin>>n>>G; 
	for(int i=1; i<=n; i++)
		fin>>a[i].g>>a[i].p;
	for(int i=1; i<=n; i++)
		for(int j=i; j<n; j++)
		{
			int aux;
			if((a[j].p/a[j].g)> (a[i].p/a[i].g))
			{
				aux = a[i].g;
				a[i].g = a[j].g;
				a[j].g = aux;
				
				aux = a[i].p;
				a[i].p = a[j].p;
				a[j].p = aux;
			}
			
		}
	back(1,0,0);
	fout<<pmax;
}