Cod sursa(job #2761820)

Utilizator Pop_MariaPop Maria Pop_Maria Data 4 iulie 2021 05:43:12
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <fstream>
#include <deque>

using namespace std;

int numar_saptamani, cantitate;
int numar_saptamani_expirare, unitati_monetare;
int cost_minim, cost[100001];
deque <int> costuri;

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

    fin >>numar_saptamani >> unitati_monetare;
    fin >> numar_saptamani_expirare;

    numar_saptamani_expirare++;

    for(int i = 0; i < numar_saptamani; i++)
    {
        fin >> cost[i] >> cantitate;

        while(costuri.empty() == 0 && cost[costuri.back()] + unitati_monetare * (i - costuri.back()) >= cost[i])
            costuri.pop_back();

         costuri.push_back(i);

        if(costuri.empty() == 0 && costuri.front() == i - numar_saptamani_expirare)
            costuri.pop_front();

        cost_minim += cantitate * (cost[costuri.front()] + unitati_monetare * (i - costuri.front()));
    }

    fout << cost_minim;

    return 0;
}