Cod sursa(job #2887367)

Utilizator mihairazvan03Dana Mihai mihairazvan03 Data 9 aprilie 2022 14:18:45
Problema Branza Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <iostream>
#include <stack>
#include <fstream>

using namespace std;
ifstream in("branza.in");
ofstream out("branza.out");

long long n, s, t, i, pret, cerere, suma, minActual;
deque<pair<long long, pair<long long, long long>>> saptamaniDeq;    //<pos, <pret, cerere>>
stack<pair<long long, pair<long long, long long>>> stivaSapt;
int main()
{

    in >> n >> s >> t;

    for(i = 1; i <= n; i++)
    {
        in >> pret >> cerere;

        if(stivaSapt.empty() == false && stivaSapt.top().first + t < i)
            stivaSapt.pop();

        if(stivaSapt.empty() == false && pret <= stivaSapt.top().second.first + (i - stivaSapt.top().first) * s)
            stivaSapt.pop();

        if(stivaSapt.empty() == false)
            minActual = stivaSapt.top().second.first + (i - stivaSapt.top().first) * s;
        else
        {
            minActual = pret;
            stivaSapt.push(make_pair(i, make_pair(pret, cerere)));
        }

        suma += minActual * cerere;
    }

    out<<suma;

    return 0;
}