Cod sursa(job #1830201)

Utilizator titusuTitus C titusu Data 16 decembrie 2016 13:23:02
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

fstream fin("rucsac.in", ios::in), fout("rucsac.out", ios::out);

int n , GMax, greutate[5001], profit[5001];
int poz[5001];

bool fcmp(int x, int y)
{
    return profit[x] * greutate[y] > greutate[x] * profit[y];
}

int main()
{
    fin >> n >> GMax;
    for(int i = 1 ; i <= n ; i ++)
        fin >> greutate[i] >> profit[i], poz[i] = i;
    sort(poz + 1, poz + n + 1, fcmp);
    //for(int i = 1 ; i <= n ; i ++)
    //    cout << greutate[poz[i]] << " " << profit[poz[i]] << endl;
    int pmax = 0;
    for(int i = 1 ; i <= n ; i ++)
        if(GMax >= greutate[poz[i]])
            GMax -= greutate[poz[i]], pmax += profit[poz[i]];
    fout << pmax;
    return 0;
}