Pagini recente » Cod sursa (job #130939) | Cod sursa (job #2356073) | Cod sursa (job #1383726) | Cod sursa (job #711889) | Cod sursa (job #3128008)
#include <iostream>
#include <fstream>
#include <deque>
int main()
{
std::fstream f ("branza.in");
std::ofstream g ("branza.out");
long v[100000], n,s,t,cantitate,pret_minim=0;
std::deque <int> d;
f>>n>>s>>t;
for(int i=1;i<=n;i++){
f>>v[i]>>cantitate;
while(!d.empty() && v[i]<v[d.back()] + s*(i-d.back())) //verific daca merita sa o tin
d.pop_back();
d.push_back(i);
if(!d.empty() && i-d.front()>t) //verific termenul branzei depozitate
d.pop_front();
pret_minim=pret_minim+cantitate*(v[d.front()]+s*(i-d.front()));
// pretul curent+cantitatea*(costul de productie+chiria*nr_de_zile_depozitate)
}
g<<pret_minim;
f.close();
g.close();
return 0;
}