Pagini recente » Cod sursa (job #2392069) | Cod sursa (job #184648) | Cod sursa (job #2047588) | Cod sursa (job #977857) | Cod sursa (job #2492320)
#include <iostream>
#include <fstream>
#include <queue>
#include <algorithm>
using namespace std;
ifstream f("lupu.in");
ofstream g("lupu.out");
typedef pair <unsigned long long int,unsigned long long int> copil;
copil v[200001],aux;
priority_queue<unsigned long long int> coada;
int n,ok;
unsigned long long int x,l2,suma;
int partitie (int l,int r)
{
int pivot=v[r].first,poz=l-1;
for(int j=l;j<=r;j++)
{
if(v[j].first<=pivot)
{
poz++;
aux=v[poz];
v[poz]=v[j];
v[j]=aux;
}
}
return poz;
}
void quicksort(int l,int r)
{
if(l<r)
{
int pivot=partitie(l,r);
quicksort(l,pivot-1);
quicksort(pivot+1,r);
}
}
int main()
{
f>>n>>x>>l2;
for(int i=1;i<=n;i++)
f>>v[i].first>>v[i].second;
quicksort(1,n);
// sort(v, v+n);
for(int i=1;i<=n;i++)
{
ok=1;
int calc=(x-v[i].first)/l2;
coada.push(v[i].second);
while(ok)
{
if(i+1<=n)
{
int calc2=(x-v[++i].first)/l2;
if(calc2==calc)
coada.push(v[i].second);
else
{
ok=0;
i--;
}
}
else
ok=0;
}
suma+=coada.top();
coada.pop();
}
g<<suma;
return 0;
}