Cod sursa(job #536245)

Utilizator stefisuciuStefan Suciu stefisuciu Data 18 februarie 2011 14:02:37
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

struct generator{
	double e, c;
};

int g, en; 
double cmin, s;
generator gen[1001];
double ef[1001];

int main()
{
	bool ord;
	double aux;
	ifstream fin("energii.in");
	ofstream fout("energii.out");
	fin>>g>>en;
	for (int i=0; i<g; i++){
		fin>>gen[i].e>>gen[i].c;
		s+=gen[i].e;
		ef[i]=gen[i].e/gen[i].c;
	}
	if (s<en){
		fout<<"-1";
		return 0;
	}
	do{
		ord=true;
		for (int i=0; i<g-1; i++)
			if (ef[i]<ef[i+1]){
				aux=ef[i];
				ef[i]=ef[i+1];
				ef[i+1]=aux;
				aux=gen[i].e;
				gen[i].e=gen[i+1].e;
				gen[i+1].e=aux;
				aux=gen[i].c;
				gen[i].c=gen[i+1].c;
				gen[i+1].c=aux;
				ord=false;
			}
	}while (ord==false);
	for (int i=0; i<g; i++){
		if (en>0) {
			en-=gen[i].e;
			cmin+=gen[i].c;
		}
		if (en<=0) break;
	}
	fout<<cmin;
	//for (int i=0; i<g; i++)
		//cout<<ef[i]<<" "<<gen[i].e<<" "<<gen[i].c<<endl;
}