Cod sursa(job #2888426)

Utilizator mirceaspPetcu Mircea mirceasp Data 11 aprilie 2022 01:32:01
Problema Branza Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
ifstream f("branza.in");
ofstream g("branza.out");
int main()
{
    long long n,depozitare,timp,cost,cerere,i,suma;
    f >> n >> depozitare >> timp;
    long long *preturi = new long long[n+1];
    long long *cereri = new long long[n+1];
    i = 0;
    while (f>>cost>>cerere){
        *(preturi+i) = cost;
        *(cereri +i) = cerere;
        i++;
    }
    deque<long long>d;
    suma = 0;
    for(i = 0;i<n;i++)
    {
        while (!d.empty() && i-timp >= d.back())
            d.pop_front();
        while (!d.empty() && preturi[i]< (preturi[d.back()]+depozitare*(i-d.back())))
            d.pop_back();

        d.push_back(i);
        suma += cereri[i]*(preturi[d.front()] + depozitare*(i-d.front()));
    }
    g<<suma;
    delete[] cereri;delete[] preturi;
    f.close();g.close();
    return 0;
}