Pagini recente » Cod sursa (job #283474) | Cod sursa (job #3212249) | Cod sursa (job #1822767) | Cod sursa (job #783858) | Cod sursa (job #203981)
Cod sursa(job #203981)
#include <stdio.h>
#define N 100005
int c[N],p=1,n,s,t;
struct ab{
int a,b;
};
ab v[N];
int caut(int x,int k){
int st=p,dr=c[0],m;
while(st<dr){
m=(st+dr)>>1;
if(v[c[m]].a+(k-c[m])*s>=x) dr=m;
else st=m+1;
}
if(v[c[st]].a+(k-c[st])*s<x) st++;
return st;
}
int main(){
int i,z,total=0,min;
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
scanf("%d%d%d",&n,&s,&t);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].a,&v[i].b);
c[1]=c[0]=1;
total=v[1].a*v[1].b;
/*for(i=2;i<=min;i++){
z=caut(v[i].a,i);
c[0]=z;c[z]=i;
total+=v[i].b*(v[c[p]].a+(i-c[p])*s);
}*/
for(i=2;i<=n;i++){
if(i-t>=c[p]) p++;
z=caut(v[i].a,i);
c[z]=i;c[0]=z;
total+=v[i].b*(v[c[p]].a+(i-c[p])*s);
}
printf("%d\n",total);
}