Pagini recente » Cod sursa (job #1797840) | Cod sursa (job #2080258) | Cod sursa (job #2948570) | Cod sursa (job #899114) | Cod sursa (job #2287666)
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int p[MAXN], c[MAXN];
deque<int> dq;
int main()
{
ifstream fin("branza.in");
ofstream fout("branza.out");
int n, s, t;
fin >> n >> s >> t;
for(int i = 1; i <= n; ++i)
fin >> p[i] >> c[i];
long long tot = 0;
for(int i = 1; i <= n; ++i){
while(!dq.empty() && p[i] <= p[dq.back()] + s * (i - dq.back()))
dq.pop_back();
if(!dq.empty() && i - dq.front() > t)
dq.pop_front();
while(!dq.empty() && p[dq.front()] + s * (i - dq.front()) > p[dq.front() + 1] + s * (i - dq.front() - 1))
dq.pop_front();
dq.push_back(i);
tot += 1LL * c[i] * (p[dq.front()] + s * (i - dq.front()));
}
fout << tot;
return 0;
}