Pagini recente » Cod sursa (job #489283) | Cod sursa (job #3144711) | Cod sursa (job #465997) | Cod sursa (job #1349671) | Cod sursa (job #2889033)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("branza.in");
ofstream fout("branza.out");
int main()
{
deque < long long int > branza;
long long int suma = 0;
int n, s, t;
fin>>n>>s>>t;
long long int cost[n], cant[n];
for(long long int i = 0; i < n; i++)
fin>>cost[i]>>cant[i];
for(long long int i = 0; i < t; i++){
while(!branza.empty() && cost[i] <= cost[branza.back()] + s * (i-branza.back())){
branza.pop_back();
}
branza.push_back(i);
suma = suma + cant[i] * (cost[branza.front()] + s * (i - branza.front()));
}
for(long long int i = t; i < n; i++){
if((i - branza.front())-t > 0){
branza.pop_front();
}
while(!branza.empty() && cost[i] <= cost[branza.back()] + s * (i-branza.back())){
branza.pop_back();
}
branza.push_back(i);
suma = suma + cant[i] * (cost[branza.front()] + s * (i - branza.front()));
}
fout<<suma;
return 0;
}