Cod sursa(job #2888114)

Utilizator a.dulumanDuluman Andrada-Georgiana a.duluman Data 10 aprilie 2022 18:11:31
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

ifstream fin("branza.in");
ofstream fout("branza.out");

int N, S, T;
long long total;
deque <pair<long long, long long>> d;
///in coada vom pastra perechea(indice sapt, pret)


int main()
{
    int i, cant, pret;
    fin >> N >> S >> T;

    for(i = 0; i < N; i++)
    {
        ///citim cant si pretul din saptamana curenta
        fin >> pret >> cant;
        
        while(d.empty() == 0 && pret < d.back().second + S * (i - d.back().first))
            d.pop_back();

        d.push_back(make_pair(i, pret));

        ///daca trece perioada maxima de depozitare, eliminam acea varianta
        if(d.front().first < i - T)
            d.pop_front();

        total += cant * (d.front().second + S * (i - d.front().first));
    }

    fout << total;
    return 0;
}