Pagini recente » Cod sursa (job #358594) | Cod sursa (job #1506825) | Cod sursa (job #2957110) | Cod sursa (job #3176204) | Cod sursa (job #2732086)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
deque<long long> pret_minim;
int c [100010];
int main()
{
int n, s, t, p;
long long min = 0;
f >> n >> s >>t;
for (int i=0; i<n; i++)
{
f >> c[i] >> p;
if(pret_minim.size()!=0 && pret_minim.front() == i-t)
pret_minim.pop_front();
while(pret_minim.size()!=0 && c[i] <= c[pret_minim.back()] + s*(i-pret_minim.back()))
pret_minim.pop_back();
pret_minim.push_back(i);
min += (long long)p * (c[pret_minim.front()]+s*(i-pret_minim.front()));
}
g << min;
}