Pagini recente » Cod sursa (job #949587) | Cod sursa (job #3125132) | Cod sursa (job #2863420) | Cod sursa (job #810504) | Cod sursa (job #440454)
Cod sursa(job #440454)
#include <fstream>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
class Gutuie{
public:
unsigned int inaltime, greutate;
};
bool comp (Gutuie x, Gutuie y) {
return x.inaltime > y.inaltime;
}
unsigned int nivel(unsigned int h, unsigned int h_max, unsigned int u) {
return (h_max - h)/u + 1;
}
int main() {
unsigned int H_Max, u, n;
ifstream fin("gutui.in");
ofstream fout("gutui.out");
fin >> n >> H_Max >> u;
unsigned int i;
vector<Gutuie> dnapom(n);
vector<unsigned int> sac;
for( i = 0; i < n; i++ )
fin >> dnapom[i].inaltime >> dnapom[i].greutate;
sort(dnapom.begin(), dnapom.end(), comp);
for( i = 0; i < n; i++ ) {
if( sac.size() == nivel( dnapom[i].inaltime, H_Max, u) ) {
if(*min_element(sac.begin(), sac.end() ) < dnapom[i].greutate )
*min_element(sac.begin(), sac.end() ) = dnapom[i].greutate;
}
else sac.push_back(dnapom[i].greutate);
}
int g_max = 0;
for (i = 0; i<sac.size(); i++) {
g_max += sac[i];
}
fout << g_max;
fin.close();
fout.close();
return 0;
}