Pagini recente » Cod sursa (job #2976874) | Cod sursa (job #364145) | Cod sursa (job #2003474) | Cod sursa (job #1605921) | Cod sursa (job #2268439)
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
deque<int>deck;
long long zile, ist,pret_depozitare, timp_depozitare,s, ok,mini,d[100005],st,dr,auxst,auxdr,val;
struct{
long long pret, necesitate;
}branza[100005];
int main() {
ios_base::sync_with_stdio(false);
f >> zile >> pret_depozitare >> timp_depozitare;
st=1;
dr=0;
for (int i=1; i<=zile; i++)
{
f >> branza[i].pret >> branza[i].necesitate;
if (st!=dr && i-st==timp_depozitare+1)
st++;
while (st!=dr && branza[dr].pret>=branza[i].pret)
dr--;
d[++dr]=i;
auxst=st;
auxdr=dr;
mini=99999999;
while (auxst<=auxdr)
{
val=branza[d[auxst]].pret*branza[i].necesitate+pret_depozitare*(i-d[auxst])*branza[i].necesitate;
if (val<mini)
mini=val,ist=auxst;
auxst++;
}
st=ist;
s+=mini;
}
g << s;
return 0;
}