Cod sursa(job #436875)

Utilizator mihai.popescuPopescu Mihai mihai.popescu Data 9 aprilie 2010 00:28:41
Problema Gutui Scor 10
Compilator cpp Status done
Runda teme_upb Marime 2.13 kb
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>

using namespace std;

class Gutuie{
	public:
		int greutate;
		int inaltime;
	
};

//int  compare(struct gutuie *, struct gutuie *);

//bool compare(struct gutuie *,struct gutuie *);

bool compare(const Gutuie& g1,const Gutuie& g2){
return g1.inaltime > g2.inaltime;	
}

int main(){
	
 ifstream fin("gutui.in");
 ofstream fout("gutui.out");		
	
 int n,h,u;
 
 fin>>n;
 fin>>h;
 fin>>u;
 
 //cout<<"Numar: "<<n<<" Inaltime: "<<h<<" Inaltare: "<<u<<endl;
 vector<Gutuie> v;
 
 int i;
 for(i = 0; i < n; i++){
	 Gutuie g;
	 fin>>g.inaltime;
	 fin>>g.greutate;
	 v.push_back(g);
	} 
   	
   
 
 //vector<Gutuie>::iterator it;
 
 
 
 
 //Gutuie g1;
 //Gutuie g2;
 //Gutuie g3;
 
 //g1.greutate = 20;
 //g1.inaltime = 10;
 //g2.greutate = 40;
 //g2.inaltime = 40;
 //g3.greutate = 20;
 //g3.inaltime = 20;
 //v.push_back(g1);
 //v.push_back(g2);
 //v.push_back(g3);
 
 //cout<<v.
 //vector<Gutuie>::const_iterator citer = v.begin();
 //v.erase(v.begin(),v.begin()+1);
 std::sort(v.begin(),v.end(),compare);
 //cout<<endl<<v.size();
 /*for(vector<Gutuie>::const_iterator citer = v.begin();citer != v.end();++citer)
    cout<<" "<<(*citer).inaltime;*/
   //cout<<endl; 
 int suma = 0;
 int nr;
 //cout << "vectorul contine:";
 //for(vector<Gutuie>::const_iterator citer = v.begin();citer != v.end();++citer)
   // cout<<" "<<(*citer).inaltime;
    //cout<<endl;
    //vector<Gutuie>::const_iterator citer = v.begin();
   while(v.size() > 0)
   {
	
	int count = 0;
	int iesi = 1;
	int s = 0;
	
	while(iesi == 1){
		if( (u > (h-v[count].inaltime)) && count < v.size() ){
					
				if(s < v[count].greutate)
					s = v[count].greutate;
				count++;
					//citer++;
		}	
		else
		 iesi = 0;
    }   
    if(count == 0)
		{
		s = v[count].greutate;
		count++;
		}
		
   //cout<<"Count este :"<<count<<endl;
   v.erase(v.begin(),v.begin()+count);
   //cout<<v.size();
   suma = suma +s;
   for(i = 0;i < v.size();i++)
       v[i].inaltime = v[i].inaltime + u;
   //citer = v.begin();
   
   }   
   //cout<<endl;
  //cout<<v[0].inaltime<<endl;  
  fout<<suma;
  fin.close();
  fout.close();
  return 0;
 	
	
}