Pagini recente » Cod sursa (job #2888065) | Cod sursa (job #1523905) | Cod sursa (job #1502202) | Cod sursa (job #2348400) | Cod sursa (job #2888408)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int main()
{
long long n,depozitare,timp,cost,cerere,i,suma;
f >> n >> depozitare >> timp;
deque<long long>dv;
deque<long long >dp;
i = 0;
suma = 0;
while (f>>cost>>cerere) {
while (!dp.empty() && !dv.empty() && cost<= dv.back()+depozitare*(i-dp.back())) {
dv.pop_back();
dp.pop_back();
}
dv.push_back(cost);
dp.push_back(i);
if(i-timp == dp.back())
{
dp.pop_front();
dv.pop_front();
}
suma += cerere*(dv.front() + depozitare*(i-dp.front()));
i++;
}
g<<suma;
return 0;
}