Pagini recente » Cod sursa (job #800777) | Cod sursa (job #1038395) | Cod sursa (job #735962) | Cod sursa (job #1131222) | Cod sursa (job #1491986)
#include <cstdio>
#define NMAX 100007
#define LL long long
using namespace std;
int n, s, t, dq[NMAX], st = 1, dr = 1;
LL v[NMAX], p, ans;
int main()
{
freopen("branza.in", "r", stdin);
freopen("branza.out", "w", stdout);
scanf("%d%d%d%lld%lld", &n, &s, &t, &v[1], &p);
dq[1] = 1;
ans = v[1]*p;
//printf("%lld %lld %lld\n", ans, v[1], p);
for(int i = 2; i<= n; ++i)
{
//printf("i = %d st = %d dr = %d dq[st] = %d dq[dr] = %d\n", i, st, dr, dq[st], dq[dr]);
scanf("%lld %lld", &v[i], &p);
while(dr >= st && v[i] <= v[dq[dr]] + s*(i - dq[dr])) dr--;
dr++;
//printf("dr = %d\n", dr);
dq[dr] = i;
//printf("st = %d dr = %d dq[st] = %d dq[dr] = %d\n", st, dr, dq[st], dq[dr]);
//printf("check %lld\n", (v[dq[st]]+s*(i - dq[st]))*p);
ans += (v[dq[st]]+s*(i - dq[st]))*p;
//printf("ans = %lld\n", ans);
if(dq[st] + t <= i) st++;
}
printf("%lld\n", ans);
return 0;
}