Pagini recente » Cod sursa (job #2830113) | Cod sursa (job #2355687) | Cod sursa (job #2278108) | Cod sursa (job #705354) | Cod sursa (job #3251729)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <stack>
#include <climits>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
const int LMAX = 30005;
deque<pair<long long, long long>> dqmin;
int main() {
int n, i, c, s, t;
long long sol, x;
fin>>n>>s>>t;
sol = 0;
for (i = 0; i < n; i++) {
fin>>x>>c;
while (!dqmin.empty() && dqmin.back().first + 1LL*s*(i - dqmin.back().second) >= x) {
dqmin.pop_back();
}
dqmin.push_back({x, i});
if (dqmin.front().second == i - t - 1) dqmin.pop_front();
sol = sol + (dqmin.front().first + 1LL*s*(i - dqmin.front().second))*c;
}
fout<<sol;
fin.close();
fout.close();
return 0;
}