Pagini recente » Cod sursa (job #2024703) | Cod sursa (job #2850969) | Cod sursa (job #2971398) | Cod sursa (job #256546) | Cod sursa (job #509530)
Cod sursa(job #509530)
#include<iostream>
#include<fstream>
using namespace std;
ifstream aa("branza.in");
ofstream ss("branza.out");
int n,s,t,v[10001],x[12001],st=1,dr=0,d[10001],i,k;
long long sum;
inline void stanga(int i)
{
if (d[st]==i-t) {
++st;
}
}
inline void dreapta(int i){
while(st<=dr && v[i]<=v[d[dr]] + (long long)s * (i-d[dr]))
--dr;
}
inline void adauga(int i) {
d[++dr]=i;
}
int main() {
aa >> n >> s >> t;
for (i=1;i<=n;++i) {
aa >> v[i] >> x[i];
}
++t;
for(i=1;i<=n;++i) {
stanga(i);
dreapta(i);
adauga(i);
sum+=(v[d[st]]+(long long)s * (i - d[st]))*x[i];
}
ss << sum;
return 0;
}