Pagini recente » Monitorul de evaluare | Cod sursa (job #1781574) | Cod sursa (job #1793840) | Cod sursa (job #1282147) | Cod sursa (job #1503606)
#include<cstdio>
#include<deque>
using namespace std;
long long sol, X, Y, N, S, T, i;
deque <long long> val;
deque <long long> pos;
int main()
{
freopen("branza.in","r",stdin);
freopen("branza.out","w",stdout);
scanf("%lld%lld%lld", &N, &S, &T);
scanf("%lld%lld", &X, &Y);
val.push_back(X);
pos.push_back(1);
sol = X * Y;
for (i = 2; i <= N; i++)
{
scanf("%lld%lld", &X, &Y);
while (!pos.empty() && (i - pos.front() > T))
{
val.pop_front();
pos.pop_front();
}
while (!val.empty() && !pos.empty() && X <= (val.back() + (i - pos.front()) * S))
{
val.pop_back();
pos.pop_back();
}
val.push_back(X);
pos.push_back(i);
sol += Y * (val.front() + (i - pos.front()) * S);
}
printf("%lld\n", sol);
}