Cod sursa(job #3163779)

Utilizator SSKMFSS KMF SSKMF Data 1 noiembrie 2023 08:30:58
Problema Branza Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <deque>
using namespace std;

ifstream cin ("branza.in");
ofstream cout ("branza.out");

int main ()
{
    int numar_saptamani , taxa , limita;
    cin >> numar_saptamani >> taxa >> limita;

    long long total = 0;
    deque < pair <int , int> > optiuni;
    for (int indice = 1 , cost , factor ; indice <= numar_saptamani ; indice++)
    {
        cin >> cost >> factor;

        while (!optiuni.empty() && cost <= optiuni.back().first + (indice - optiuni.back().second) * taxa)
            { optiuni.pop_back(); }

        optiuni.push_back(make_pair(cost , indice));

        if (optiuni.front().second == indice - limita)
            { optiuni.pop_front(); }

        total += 1LL * (optiuni.front().first + (indice - optiuni.front().second) * taxa) * factor;
    }

    cout << total;
    cout.close(); cin.close();
    return 0;
}