Pagini recente » Cod sursa (job #3218917) | Cod sursa (job #2568619) | Cod sursa (job #1561357) | Cod sursa (job #2055587) | Cod sursa (job #305151)
Cod sursa(job #305151)
#include<cstdio>
#include<deque>
using namespace std;
#define MAX_N 100003
#define p (Q.front())
#define u (Q.back())
#define ll long long
deque<int> Q ;
ll a[MAX_N];
ll c[MAX_N];
ll P[MAX_N];
ll S, T, N;
int main()
{
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
scanf("%lld%lld%lld",&N,&S,&T);
long long i, val;
for(i=1;i<=N;++i) scanf("%lld%lld",&c[i], &P[i]);
a[0] = 0;
for(i=1;i<=N;++i)
{
val = c[i] + S * (N-i);
while(!Q.empty() && c[u] + S * (N-u) > val) Q.pop_back();
Q.push_back(i);
a[i] = a[i-1] + P[i] * (c[p] + S * (N-p) - S * (N-i));
if(p == i-T) Q.pop_front();
}
printf("%lld\n",a[N]);
return 0;
}