Pagini recente » Cod sursa (job #1908455) | Cod sursa (job #911321) | Cod sursa (job #2907818) | Cod sursa (job #554340) | Cod sursa (job #2824336)
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
const int Nmax = 100005;
priority_queue<int> Q;
struct Oaie {
int lana, timp;
bool operator < (const Oaie &o) {
return timp < o.timp;
}
};
Oaie oi[Nmax];
bool comp(Oaie a, Oaie b)
{
if(a.timp<b.timp) return 1;
return 0;
}
int main() {
int n, X, L;
long long sol = 0;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
fin >> n >> X >> L;
for(int i = 1; i <= n; i++) {
int dist;
fin >> dist >> oi[i].lana;
oi[i].timp = (X - dist) / L;
}
// sort(oi + 1, oi + n + 1);
//sort(oi + 1, oi + n + 1, comp);
bool sortat;
do
{
sortat = true;
for(int i = 1 ; i < n ; i ++)
if(oi[i].timp > oi[i+1].timp)
{
int aux = oi[i].timp;
oi[i].timp = oi[i+1].timp;
oi[i+1].timp = aux;
int aux2 = oi[i].lana;
oi[i].lana = oi[i+1].lana;
oi[i+1].lana = aux2;
sortat = false;
}
}
while(!sortat);
int p = n, T = oi[n].timp;
while(T >= 0) {
while(p > 0 && oi[p].timp >= T) {
Q.push(oi[p].lana);
p--;
}
if(!Q.empty()) {
sol += Q.top();
Q.pop();
}
T--;
}
fout << sol;
return 0;
}