Pagini recente » Borderou de evaluare (job #1600156) | Borderou de evaluare (job #1788799) | Cod sursa (job #436875)
Cod sursa(job #436875)
#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;
}