Pagini recente » Cod sursa (job #2618754) | Cod sursa (job #1887301) | Cod sursa (job #1901072) | Cod sursa (job #1913264) | Cod sursa (job #2888422)
#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;
long long *preturi = new long long[n+1];
long long *cereri = new long long[n+1];
i = 0;
while (f>>cost>>cerere){
*(preturi+i) = cost;
*(cereri +i) = cerere;
i++;
}
deque<long long>d;
suma = 0;
for(i = 0;i<n;i++)
{
while (!d.empty() && preturi[i]<= (preturi[d.back()]+depozitare*(i-d.back())))
d.pop_back();
if(!d.empty() && i-timp >= d.back())
d.pop_front();
d.push_back(i);
suma += cereri[i]*(preturi[d.front()] + depozitare*(i-d.front()));
}
g<<suma;
delete[] cereri;delete[] preturi;
f.close();g.close();
return 0;
}