Cod sursa(job #2268439)

Utilizator victorv88Veltan Victor victorv88 Data 24 octombrie 2018 20:14:21
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#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;
}