Pagini recente » Cod sursa (job #1262924) | Cod sursa (job #1753177) | Cod sursa (job #709620) | Cod sursa (job #2032598) | Cod sursa (job #2213102)
#include <fstream>
using namespace std;
const int N = 5000000;
int d[N], v[N], n, k;
int main()
{
ifstream fin("branza.in");
ofstream fout("branza.out");
long long n, k, s, p, t; fin >> n >> s >> t; k = t;
long long st = 0, dr = -1;
long long S = 0;
for(int i = 0; i < n; ++i)
{
fin >> v[i] >> p;
/// scot din coada
if(d[st] == i-k-1)
++st;
/// scot din dreapta poz pe care nu voi avea minim
while(st <= dr && v[i] <= v[d[dr]] + (i - d[dr])*s)
--dr;
d[++dr] = i;
S += p * (v[d[st]] + (i - d[st])*s);
}
fout << S; return 0;
}