Cod sursa(job #2981209)

Utilizator andrei0simionAndrei Simion andrei0simion Data 17 februarie 2023 15:30:37
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream in ("deque.in");
    cin.rdbuf(in.rdbuf());
    ofstream out ("deque.out");
    cout.rdbuf(out.rdbuf());

    int nrElemente;
    cin >> nrElemente;
    int lungimeSecventa;
    cin >> lungimeSecventa;

    int* sir = new int[nrElemente];
    for(int i = 0; i < nrElemente; i++)
        cin >> sir[i];

    int* coada = new int[lungimeSecventa];
    int inceput = 0;
    int sfarsit = 1;
    coada[inceput] = 0;

    long long sumaMinime = 0;
    for(int i = 1; i < nrElemente; i++)
    {
        while(sfarsit > 0 && sir[i] <= sir[coada[sfarsit - 1]])
        {
            sfarsit--;
        }
        coada[sfarsit] = i;
        sfarsit++;
        if(i - coada[inceput] >= lungimeSecventa)
            inceput++;

        if(i + 1 >= lungimeSecventa)
            sumaMinime += sir[coada[inceput]];
    }
    cout << sumaMinime << endl;

    delete[] coada;
    delete[] sir;
    return 0;
}