Cod sursa(job #874495)

Utilizator shagarthAladin shagarth Data 8 februarie 2013 17:35:13
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int i,v[1001],a[1001],b[1001],l,r,n,gmax;

void quicksort(int v[],int l,int r){
	int i=l, j=r;
	int aux;
	int pv=v[(l+r)/2];
	while (i<=j){
		while (v[i]>pv)
            i++;
        while (v[j]<pv)
            j--;
        if (i<=j){

            aux=v[i];
            v[i]=v[j];
            v[j]=aux;

            aux=a[i];
            a[i]=a[j];
            a[j]=aux;

            aux=b[i];
            b[i]=b[j];
            b[j]=aux;

            i++;
            j--;
		}
	}
	if (l<j)
		quicksort(v,l,j);
	if (i<r)
		quicksort(v,i,r);
	return;
}
int main()
{
	f>>n>>gmax;
	for(i=1;i<=n;i++)
	{
        f>>a[i];
        f>>b[i];
    }

    for(i=1;i<=n;i++)
        v[i]=b[i]/a[i];

	l=1;
	r=n;
	quicksort(v,l,r);

	int s=0;
	for(i=1;i<=n;i++)
	{
	    if(gmax-a[i]>=0)
	    {
	        s=s+b[i];
	        g<<b[i]<<" ";
	        gmax=gmax-a[i];
        }
	}

	g<<s;
	f.close();
	g.close();
	return 0;
}