Pagini recente » Cod sursa (job #301350) | Cod sursa (job #2908488) | Cod sursa (job #1248013) | Cod sursa (job #2514495) | Cod sursa (job #773765)
Cod sursa(job #773765)
Const
finp='branza.in';
fout='branza.out';
Type
mat=array [0..100000] of longint;
Var q,c,p:mat;
a:array [0..100000] of int64;
t,n,s,f,r:longint;
res:int64;
fi,fo:text;
Procedure Doc;
Var i:longint;
Begin
Assign(fi,finp);
Reset(fi);
Read(fi,n,s,t);
For i:=1 to n do Read(fi,c[i],p[i]);
Close(fi);
end;
Procedure Push(i:longint);
Begin
While (f<=r) and (a[i]<=a[q[r]]) do dec(r);
inc(r);
q[r]:=i;
If q[f]=i-t then inc(f);
end;
Procedure Lam;
Var i:longint;
Begin
f:=1;
r:=0;
For i:=1 to n do
Begin
a[i]:=int64(c[i])-int64(i*s);
Push(i);
res:=res+int64((int64(a[q[f]])+int64(i*s))*int64(p[i]));
end;
end;
Procedure Inkq;
Begin
Assign(fo,fout);
Rewrite(fo);
Write(fo,res);
Close(fo);
end;
Begin
Doc;
Lam;
Inkq;
end.