Cod sursa(job #519261)

Utilizator fgravilaGravila Felix fgravila Data 4 ianuarie 2011 18:42:56
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<iostream>
#include<fstream>
using namespace std;

ifstream in("energii.in");
ofstream out("energii.out");

float n,e,gen[1001][2];


void citire(){
	in>>n>>e;
	int i;
	for(i=0;i<n;i++)in>>gen[i][0]>>gen[i][1];
}

void sortare(){
	int sw=1,i,tmp[2];
	float a,b;
	while(sw){
		sw=0;
		for(i=1;i<n;i++){
			a=gen[i-1][0]/gen[i-1][1];
			b=gen[i][0]/gen[i][1];
			if(a<b){
				tmp[0]=gen[i-1][0];
				tmp[1]=gen[i-1][1];
				gen[i-1][0]=gen[i][0];
				gen[i-1][1]=gen[i][1];
				gen[i][0]=tmp[0];
				gen[i][1]=tmp[1];
				sw=1;
			}
		}
	}
}

void afisare(){
	int i;
	for(i=0;i<n;i++)cout<<gen[i][0]<<" "<<gen[i][1]<<"\n";
}

void cost(){
	int i=0,cost=0,energ=0;
	while(i<n&&energ<=e){
		energ+=gen[i][0];
		cost+=gen[i][1];
		i++;
		if(energ>=e)break;
	}
	if(energ>=e)out<<cost;
	else out<<"-1";
}

int main(){
	citire();
	sortare();	
	afisare();
	cost();

	return 0;
}