Cod sursa(job #503120)

Utilizator MythGhiorghe Mihaita Myth Data 21 noiembrie 2010 16:09:10
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iostream>

using namespace std;

int w,g,eg[1001],cg[1001],i,maxim,w2,c,j,nr,maximi;
float ef[1001],aux;
bool v[10001];




int main() {
	ifstream f("energii.in");
	ofstream gout("energii.out");
	f>>g>>w;
	for (i=1; i<=g; i++) {
		f>>eg[i]>>cg[i];
		ef[i]=(float)eg[i]/cg[i];
	}
	for (i=1; i<g; i++)
		for (j=i+1; j<=g; j++)
			if (ef[i]<ef[j]) {
				aux=ef[i];
				ef[i]=ef[j];
				ef[j]=aux;
				maxim=eg[i];
				eg[i]=eg[j];
				eg[j]=maxim;
				maxim=cg[i];
				cg[i]=cg[j];
				cg[j]=maxim;
			}
	for (i=1; i<=g; i++)
		if (eg[i]<=w) {
			c+=cg[i];
			w-=eg[i];
			v[i]=true;
			nr++;
		}
	if (w>0) {
		if (nr==g)
			gout<<-1;
		else {
			for (i=1; i<=g; i++)
				if (!v[i] && maxim<cg[i]) {
					maxim=cg[i];
					maximi=i;
				}
			gout<<c+cg[i];
		}
	}
	else
		gout<<c;
	return 0;
}