Cod sursa(job #440454)

Utilizator vladoneSalop Vlad Mihai vladone Data 12 aprilie 2010 01:20:39
Problema Gutui Scor 100
Compilator cpp Status done
Runda teme_upb Marime 1.04 kb
#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;
}