Cod sursa(job #2510881)

Utilizator ililogIlinca ililog Data 17 decembrie 2019 18:21:37
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<algorithm>

int n;
float gmax, castig, greutate;

struct obiect{
    float g, val, rap;
} v[1001];

bool cond(obiect a, obiect b) {
    if (a.rap > b.rap) {
        return 1;
    } else if (a.rap == b.rap) {
        if (a.g > b.g) {
            return 1;
        }
    }

    return 0;
}

int main() {

    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");

    fin >> n >> gmax;

    for (int i = 1; i<=n; i++) {
        fin >> v[i].g >> v[i].val;
        v[i].rap = v[i].val/v[i].g;
    }

    sort(v+1, v+n+1, cond);
    for (int i = 1; i<=n; i++) {
        cout << v[i].g << " " << v[i].val << " " << v[i].rap << endl;

        if (greutate < gmax) {
            if (v[i].g+greutate > gmax) {

                int diff = gmax-greutate;

                greutate += diff;
                castig += diff*v[i].rap;


            } else {
                greutate += v[i].g;
                castig += v[i].val;
            }
        } else {
            break;
        }

        cout << greutate << " " << castig << endl << endl;


    }

    fout << castig;


    fin.close();
    fout.close();

    return 0;
}