Pagini recente » Cod sursa (job #2950741) | Cod sursa (job #1993435) | Cod sursa (job #1625815) | Cod sursa (job #3202620) | Cod sursa (job #1992517)
#include<fstream>
#include<set>
#include<algorithm>
#include<vector>
#define a first
#define b second
using namespace std;
ifstream fin("lupu.in");
ofstream fout("lupu.out");
int n,l,in,b[100005],ma,j=1,x;
long long r;
pair<long long,int >v[100005];
typedef pair<long long,int >pii;
int cmp(pii A,pii B)
{
if(A.a<B.a)
return 1;
return 0;
}
long long nex(long long g)
{
if(g%l==0)
return g;
return g/l*l+l;
}
multiset<int,greater<int> >z;
int main()
{
fin>>n>>x>>l;
for(int i=1;i<=n;i++)
fin>>v[i].a>>v[i].b;
if(l==0)
{
for(int i=1;i<=n;i++)
if(v[j].a<=x)
r+=v[j].b;
}
else
{
sort(v+1,v+n+1,cmp);
for(long long i=0;i<=x;i+=l)
{
for(;j<=n&&v[j].a<=i;j++)
z.insert(v[j].b);
z.insert(0);
r+=*z.begin();
z.erase(z.begin());
if(*z.begin()==0&&i!=x)
{
i=nex(v[j].a)-l;
if(i+l>x)
i=x-l;
}
if(j>n)
break;
}
}
fout<<r;
}