Pagini recente » Cod sursa (job #1437677) | Cod sursa (job #863938) | Cod sursa (job #2887812) | Cod sursa (job #2823113) | Cod sursa (job #2907997)
#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
struct rucsac {
double valoare;
double greutate;
}s[5001];
int n, Gmax;
int g=0;
double val=0;
bool sortare(rucsac a, rucsac b)
{
return(a.unitate > b.unitate);
}
int ok = 1;
void solve()
{
for (int i = 1; i <= n && ok; i++)
{
if ((double)(Gmax - g) >= s[i].greutate)
{
val += s[i].valoare;
g += s[i].greutate;
}
else
{
al += (s[i].unitate * (Gmax - g));
ok = 0;
}
}
fout << val;
}
int main()
{
fin >> n >> Gmax;
for (int i = 1; i <= n; i++)
{
fin >> s[i].greutate >> s[i].valoare;
s[i].unitate = s[i].valoare / s[i].greutate;
}
sort(s + 1, s + n + 1, sortare);
solve();
}