Pagini recente » Cod sursa (job #383355) | Cod sursa (job #1852908) | Cod sursa (job #1850789) | Cod sursa (job #3159859) | Cod sursa (job #2588714)
#include <iostream>
#include <fstream>
using namespace std;
const int N = 100001;
ifstream in ("branza.in");
ofstream out ("branza.out");
int n, s, t, c[N], p[N], d[N], dr, st;
long long costul = 0;
int main()
{
in >> n >> s >> t;
for (int i=1; i<=n; i++)
{
in >> c[i] >> p[i];
}
t++;
st=1;
dr=0;
for (int i=1; i<=n; i++)
{
if (st <= dr && d[st] == i-t)
{
st++;
}
while ( st <= dr && c[d[dr]] + s * (i - d[dr]) >= c[i])
{
dr--;
}
d[++dr]=i;
costul = costul + (c[d[st]] + (i - d[st]) * (long long)s) * p[i];
}
out << costul;
return 0;
}