Cod sursa(job #2716397)

Utilizator rapidu36Victor Manz rapidu36 Data 5 martie 2021 09:47:26
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("deque.in");
ofstream out ("deque.out");

int v[5000000], Dq[5000000];

int main ()
{
    int n, k;
    long long sum = 0;
    in >> n >> k;
    for (int i = 0; i < n; ++i)
    {
        in >> v[i];
    }
    int pos1 = 0, pos2 = 0;
    Dq[0] = 0;
    for (int i = 1; i < n; ++i)
    {
        if (v[i] < v[Dq[pos2]])
        {
            Dq[pos2] = i;
            while (pos2 > pos1 && v[Dq[pos2]] < v[Dq[pos2 - 1]])
            {
                Dq[pos2 - 1] = Dq[pos2];
                pos2--;
            }
        }
        else
        {
            Dq[++pos2] = i;
        }
        if (i >= k - 1)
        {
            if (Dq[pos1] < i - k + 1)
            {
                pos1++;
            }
            sum += v[Dq[pos1]];
        }
    }
    out << sum;
    return 0;
}