Pagini recente » Cod sursa (job #2865744) | Istoria paginii utilizator/dornescuvlad | Cod sursa (job #2169488) | Cod sursa (job #207791) | Cod sursa (job #3251656)
#include <bits/stdc++.h>
#define VMAX 100000
#define NMAX 100000
#define LOG 20
#define INF (long long)(1e9)
#define BASE 10007
#define MOD 1000000009
#define ll long long int
#define ADD 1000001
#define NIL 0
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
ll c[NMAX+1],p[NMAX+1];
int s,t;
int n;
deque<int> dq;
int main()
{
fin >> n >> s >> t;
for(int i=1;i<=n;i++)
{
fin >> c[i] >> p[i];
}
ll res=0;
for(int i=1;i<=n;i++)
{
if(!dq.empty() && dq.front()<i-t)
{
dq.pop_front();
}
while(!dq.empty() && c[dq.back()] - dq.back()*s >= c[i] - i*s)
{
dq.pop_back();
}
dq.push_back(i);
res += p[i]*c[dq.front()] + p[i]*s*(i-dq.front());
}
fout << res;
}