Pagini recente » Cod sursa (job #413703) | Clasamentul arhivei de probleme | Cod sursa (job #2547313) | clasament-arhiva-educationala | Cod sursa (job #425582)
Cod sursa(job #425582)
#include <fstream>
#include <stdlib.h>
#include <iostream>
using namespace std;
ifstream in ("gutui.in");
ofstream out("gutui.out");
int n, h, u, r = 0;
struct fruct {
int h;
int g;
};
fruct* fructe;
int fcmp(const void* fp1, const void* fp2) {
fruct* f1 = (fruct*)fp1;
fruct* f2 = (fruct*)fp2;
float r1 = f1->g / f1->h,
r2 = f2->g / f2->h;
return r1 - r2 < 0 ? -1 : 1;
}
int fcmp1(const void* fp1, const void* fp2) {
fruct* f1 = (fruct*)fp1;
fruct* f2 = (fruct*)fp2;
return f2->g - f1->g;
}
int fcmp2(const void* fp1, const void* fp2) {
fruct* f1 = (fruct*)fp1;
fruct* f2 = (fruct*)fp2;
return f2->h - f1->h;
}
int main() {
in >> n >> h >> u;
fructe = new fruct[n];
for (int i = 0; i < n; i++)
in >> fructe[i].h >> fructe[i].g;
qsort(fructe, n, sizeof(fruct), fcmp2);
int idx = 0, // indexul curent in lista de fructe
nr = 0, // nr de gutui culese
r = 0;
for (int i = 0; i < n; i++) {
if ((fructe[i].h + nr*u) <= h) {
nr++;
r += fructe[i].g;
}
}
out << r;
return 0;
}