Pagini recente » Cod sursa (job #966868) | Cod sursa (job #2986415) | Cod sursa (job #297175) | Cod sursa (job #3245909) | Cod sursa (job #3170809)
#include <iostream>
#include <fstream>
#include <stack>
#include <queue>
#include <vector>
ifstream fin("branza.in");
ifstream fout("branza.out");
using namespace std;
int main()
{
int n,s,t;
fin >>n>>s>>t;
vector<int> cost(n);
long long cost_total=0;
t++;
deque<int>dq;
for(int i=0;i<n;i++)
{
int cantitate;
fin >>cost[i]>>cantitate;
if(!dq.empty()&&dq.front()==i-t)
{
dq.pop_front();
}
while(!dq.empty()&&cost[i]<=cost[dq.back()]+(i-dq.back())*s)
{
dq.pop_back();
}
dq.push_back(i);
cost_total+=(long long)cantitate*(cost[dq.front()]+(i-dq.front())*s);
}
fout <<cost_total;
}