Pagini recente » Cod sursa (job #2854818) | Cod sursa (job #3246404) | Cod sursa (job #2093442) | Cod sursa (job #2436447) | Cod sursa (job #1018472)
#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;
}