Pagini recente » Cod sursa (job #2880190) | Cod sursa (job #1326782) | Cod sursa (job #2283622) | Cod sursa (job #3284834) | Cod sursa (job #513967)
Cod sursa(job #513967)
#include<fstream>
using namespace std;
const int N=100000;
int d[N],v[N],n,k,st=1,dr=0,dep,x[N];
long long s;
ifstream in("branza.in");
ofstream out("branza.out");
inline void stanga(int i)
{
if(i-d[st] == k)
++st;
}
inline void dreapta(int i)
{
while(st<=dr && v[d[dr]]+(long long)(i-d[dr])*dep >= v[i])
dr--;
}
inline void adauga(int i)
{
d[++dr] =i;
}
int main()
{
int i;
in>>n>>dep>>k;
++k;
for(i=1;i<=n;++i)
in>>v[i]>>x[i];
for(i=1;i<=n;++i)
{
stanga(i);
dreapta(i);
adauga(i);
s+=(long long)(v[d[st]]+(long long)(i-d[st])*dep)*x[i];
}
out<<s<<"\n";
return 0;
}