Pagini recente » Cod sursa (job #1652118) | Cod sursa (job #1862401) | Cod sursa (job #1322213) | Cod sursa (job #2191359) | Cod sursa (job #515701)
Cod sursa(job #515701)
#include<fstream>
using namespace std;
const int N = 100001;
struct branza
{
int pret,cant;
};
branza v[N];
int n,st=1,dr=0,t,s;
int d[N];
ifstream in("branza.in");
ofstream out("branza.out");
inline void dreapta(int i)
{
while(st<=dr && v[d[dr]].pret+(long long)(i-d[dr])*s >= v[i].pret)
--dr;
}
inline void stanga(int i)
{
if(d[st]==i-t)
++st;
}
int main()
{
long long r = 0;
int i;
in>>n>>s>>t;
for(i=1;i<=n;i++)
in>>v[i].pret>>v[i].cant;
++t;
for(i=1 ; i<=n ; ++i)
{
stanga(i);
dreapta(i);
d[++dr] = i;
r += (v[d[st]].pret + (long long)(i - d[st]) * s)*v[i].cant;
}
out<<r<<"\n";
return 0;
}