Pagini recente » Cod sursa (job #3223314) | Cod sursa (job #1870040) | Diferente pentru autumn-warmup-2007/solutii/runda-2 intre reviziile 35 si 34 | Cod sursa (job #857585) | Cod sursa (job #773758)
Cod sursa(job #773758)
Const
finp='branza.in';
fout='branza.out';
Type
mat=array [0..100000] of longint;
Var q,c,p,a:mat;
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);
inc(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]:=c[i]-i*s;
Push(i);
res:=res+int64((a[q[f]]+i*s)*p[i]);
end;
end;
Procedure Inkq;
Begin
Assign(fo,fout);
Rewrite(fo);
Write(fo,res);
Close(fo);
end;
Begin
Doc;
Lam;
Inkq;
end.