Pagini recente » Cod sursa (job #1288677) | Cod sursa (job #191184) | Profil StarGold2 | Istoria paginii runda/pregatire_oji_11-12/clasament | Cod sursa (job #439737)
Cod sursa(job #439737)
#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>
#include <functional>
#include <cstdlib>
using namespace std;
class Gutuie{
public:
int greutate;
int inaltime;
};
bool compare(const Gutuie& g1,const Gutuie& g2){
if(g1.inaltime != g2.inaltime)
return g1.inaltime < g2.inaltime;
else
return g1.greutate > g2.greutate;
}
int main(){
ifstream fin("gutui.in");
ofstream fout("gutui.out");
int n,h,u;
fin>>n;
fin>>h;
fin>>u;
vector<Gutuie> v;
vector<int> kg;
vector<int> cos;
int i;
for(i = 0; i < n; i++){
Gutuie g;
fin>>g.inaltime;
fin>>g.greutate;
v.push_back(g);
}
std::sort(v.begin(),v.end(),compare);
for(i = 0; i < n;i++){
cout<<v[i].inaltime<<" ";
}
cout<<endl;
make_heap(kg.begin(),kg.end());
int m;
int hcur = v[0].inaltime;
while(v.size() > 0)
{
m = 0;
//cout<<"Intra";
for(i = 0 ; i < v.size() ;i++)
{//cout<<"ceva";
if(v[i].inaltime >= hcur && v[i].inaltime < hcur + u){
kg.push_back(v[i].greutate);
push_heap(kg.begin(),kg.end());
make_heap(kg.begin(),kg.end());
m++;
}
else
break;
}
//cout<<m<<endl;
cos.push_back(kg[0]);
cout<<"Aleg "<<kg[0]<<endl;
pop_heap(kg.begin(),kg.end());
cout<<kg.size();
v.erase(v.begin(),v.begin()+m);
hcur = hcur + u;
for( i = n - m ; i < n ; i++)
v[i].inaltime = v[i].inaltime + u ;
}
int s = 0;
for( i = 0; i < cos.size() ; i++){
s = s + cos[i];
}
cout<<s<<endl;
}