Cod sursa(job #2269421)

Utilizator victorv88Veltan Victor victorv88 Data 25 octombrie 2018 22:46:22
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

ifstream f("branza.in");
ofstream g("branza.out");

deque<long long>deck;

long long zile, ist,pret_depozitare, timp_depozitare,s;
struct{
    long long pret, necesitate;
}branza[100005];

void rezolvare()
{
    for (int i=1; i<=zile; i++)
    {
        f >> branza[i].pret >> branza[i].necesitate;
        while (!deck.empty() && branza[deck.back()].pret+pret_depozitare>=branza[i].pret)
            deck.pop_back();
        if (!deck.empty() && i-deck.front()==timp_depozitare+1)
            deck.pop_front();
        deck.push_back(i);
        s=s+(branza[deck.front()].pret*branza[i].necesitate+((i-deck.front()))*pret_depozitare*branza[i].necesitate);
    }
}

int main() {
    ios_base::sync_with_stdio(false);
    f >> zile >> pret_depozitare >> timp_depozitare;
    rezolvare();
    g << s;
    return 0;
}