Pagini recente » Cod sursa (job #2801209) | Cod sursa (job #2986154) | Cod sursa (job #2387203) | Cod sursa (job #3283161) | Cod sursa (job #2284401)
#include <iostream>
#include <fstream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
struct Oaie
{
int distanta, lana, timp;
friend istream& operator>>(istream& in, Oaie &o)
{
return in >> o.distanta >> o.lana;
}
friend bool operator<(Oaie &o1, Oaie &o2)
{
return o1.timp < o2.timp;
}
};
int main()
{
ifstream fin("lupu.in");
int n, x, l;
fin >> n >> x >> l;
vector<Oaie> oi(n);
int timpMaxim=0;
for(int i=0; i<n; ++i)
{
fin >> oi[i];
oi[i].timp = (x - oi[i].distanta) / l;
if(timpMaxim < oi[i].timp)
timpMaxim = oi[i].timp;
}
sort(oi.rbegin(), oi.rend());
priority_queue<int> lana;
long long int suma = 0, j=0;
for(int i=timpMaxim; i>=0; --i)
{
while(oi[j].timp == i)
{
lana.push(oi[j].lana);
if(j<n-1)
j++;
else
break;
}
if(!lana.empty())
{
suma += lana.top();
lana.pop();
}
}
ofstream fout("lupu.out");
fout << suma;
return 0;
}