Cod sursa(job #3127010)

Utilizator corinarobuRobu Corina corinarobu Data 7 mai 2023 08:06:55
Problema Branza Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;

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

//pret si saptamana in care e pretul
deque< pair<long long,int>>b;
long long N,S,T,C,P,cost;
int main()
{

   f>>N>>S>>T;
   f>>C>>P;

   b.push_back({C,0});
   cost+=P*b[0].first;

   for(long long i=1; i<N;i++)
   {
        f >> C >> P;
        //verific daca au trecut cele T saptamani pentru cat tine branza
        if (b.front().second + T < i)
            b.pop_front();
        //scot branzele care nu sunt mai ieftine tinand cont de schema cu pretul pe pastratul branzei decat cea curenta
        while(!b.empty() && (S * (i - b.back().second) + b.back().first) >= C)
        	b.pop_back();

        b.push_back({C, i});


        cost += P * b.front().first + S*P*(i-b.front().second);
    }

    g << cost;

    return 0;
}