Cod sursa(job #1018472)

Utilizator alexandru70Ungurianu Alexandru alexandru70 Data 29 octombrie 2013 17:32:41
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

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

struct item {
	int p,w;
	bool operator< (const item &b) const {
		return ((p*1.0f) / (w*1.0f)) > ((b.p*1.0f) / (b.w*1.0f));
	}
};

int n,g;
vector<item> rucsac;

int main() {
	in >> n >> g;
	rucsac.resize(n);
	for(int i = 0; i < n; ++i) {
		in >> rucsac[i].p >> rucsac[i].w;
	}

	sort(rucsac.begin(), rucsac.end());
	int ind = 0;
	int totalCost = 0;
	while(g > 0 && ind < n) {
		if(rucsac[ind].p <= g){
			totalCost += rucsac[ind].w;
			g -= rucsac[ind].p;
			ind++;
		}
		else {
			totalCost += rucsac[ind].w;
			g -= rucsac[ind].p;
			break;
		}
	}
	if(g > 0){
		out << -1 << '\n';
	}
	else {
		out << totalCost << '\n';
	}
	return 0;
}