Pagini recente » Cod sursa (job #3243437) | Cod sursa (job #1614092) | Cod sursa (job #604823) | Cod sursa (job #914010) | Cod sursa (job #2031609)
#include <cstdio>
using namespace std;
struct ceva{
int x,i;
}dq[100005];
int c[100005];
int p[100005];
int main()
{
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
int n,tx,t;
long long s=0;
scanf("%d %d %d ",&n,&tx,&t);
for(int i=1;i<=n;++i)
{
scanf("%d %d",&c[i],&p[i]);
c[i]-=tx*i;
}
int st=1,dr=1;
s=(c[1]+tx)*p[1];
dq[1].x=c[1];
dq[1].i=1;
for(int i=2;i<=n;++i)
{
while(dq[dr].x>c[i]&&dr>=st)
{
dr--;
}
dq[++dr].x=c[i];
dq[dr].i=i;
if(i-dq[st].i>t)
st++;
s+=((dq[st].x+tx*dq[st].i+tx*(i-dq[st].i))*(long long)p[i]);
}
printf("%lld",s);
return 0;
}