Pagini recente » Cod sursa (job #1435419) | Cod sursa (job #2263699) | Cod sursa (job #2042516) | Cod sursa (job #2260194) | Cod sursa (job #931341)
Cod sursa(job #931341)
#include <fstream>
using namespace std;
int g[5001], c[5001], n, i, G, p = 0;
double ef[5001];
void citire ()
{
ifstream in ("rucsac.in");
in >> n >> G;
for (i = 1; i <= n; ++i)
in >> g[i] >> c[i];
in.close ();
}
void eficienta ()
{
for (i = 1; i <= n; ++i)
ef[i] = (double) c[i] / g[i];
}
void sort ()
{
double aux;
int j;
for (i = 1; i < n; ++i)
for (j = i + 1; j <= n; ++j)
if (ef[i] < ef[j])
{
aux = ef[i];
ef[i] = ef[j];
ef[j] = aux;
aux = c[i];
c[i] = c[j];
c[j] = aux;
aux = g[i];
g[i] = g[j];
g[j] = aux;
}
}
int solve ()
{
for (i = 1; i <= n; ++i)
if (G - g[i] >= 0)
{
p += c[i];
G -= g[i];
}
return p;
}
void afis (int p)
{
ofstream out ("rucsac.out");
out << p << '\n';
out.close ();
}
int main()
{
citire ();
eficienta ();
sort ();
afis (solve ());
return 0;
}