Pagini recente » Cod sursa (job #919775) | Cod sursa (job #1102788) | Cod sursa (job #2349759) | Cod sursa (job #921575) | Cod sursa (job #2712642)
#include <fstream>
#include <deque>
using namespace std;
ifstream cin("branza.in");
ofstream cout("branza.out");
const int N = 1e5;
int c[N];
int main()
{
int n,storage_p,max_t;
cin>>n>>storage_p>>max_t;
deque <int> minCost;
long long totalP=0;
for(int i=0;i<n;++i)
{
int pret;
cin>>c[i]>>pret;
if(!minCost.empty() && i-max_t-1==minCost.front())
minCost.pop_front();
while(!minCost.empty() && c[i]<=(c[minCost.back()]+storage_p*(i-minCost.back())))
minCost.pop_back();
minCost.push_back(i);
totalP += (long long)pret * ( c[minCost.front()] + (long long)(i-minCost.front()) * storage_p);
}
cout<<totalP;
return 0;
}