Cod sursa(job #443003)

Utilizator stefan.teleustefan teleu stefan.teleu Data 15 aprilie 2010 21:08:47
Problema Gutui Scor 0
Compilator cpp Status done
Runda teme_upb Marime 1.22 kb
#include<fstream>
#include<cstdlib>
#include<vector>
#include<algorithm>

using namespace std;



struct Gutui{
	unsigned long h;
	unsigned long w;
	int mark;
	bool operator() (Gutui a, Gutui b) { if (a.h==b.h) return (a.w<b.w); return (a.h<b.h); }
}gutui;

bool weigthcompare (Gutui a, Gutui b) { return (a.w < b.w);}

int main(){
	unsigned long n,h,u,u1=0,hmax=0,umax=0;
	
	ifstream fin ("gutui.in");
	ofstream fout ("gutui.out");
	fin>>n>>h>>u;
	Gutui max;
	vector<Gutui> g(n);	
	for (long i=0; i<n; i++)
		fin>>g[i].h>>g[i].w;
	for (long i=0; i<n; i++)
		{
		
		g[i].mark=0;
		}
	sort(g.begin(),g.end(),gutui);
	Gutui aux;
	for (long i=0; i<n/2; i++)
		{
		aux=g[i];
		g[i]=g[n-i-1];
		g[n-i-1]=aux;
		}
	for (long i=0; i<n; i++)
		{
		if (g[i].h+u1 < h && g[i].mark == 0)
			{	
			//max= *max_element(g.begin()+i,g.end(),weigthcompare);
			u1+=u;
			
			//for (long j=0; j<n; j++)
				//if (g[j].w==max.w && g[j].mark==0)
					//{
					umax+=g[i].w;
					g[i].mark=1;
					//}
			}
			else g[i].mark=1;
		}
	//max= *max_element(g.begin(),g.begin(),weigthcompare);
	//fout<<max.h<<" "<<max.w<<endl;
	//fout<<endl;
	//for (int i=0; i<n; i++)
	//	fout<<" "<<g[i].h<<" "<<g[i].w<<endl;
	fout<<umax<<endl;
	fin.close();
	fout.close();
	return 0;
}