Cod sursa(job #2289354)

Utilizator StanCatalinStanCatalin StanCatalin Data 24 noiembrie 2018 14:09:11
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb

#include <iostream>

#include <fstream>



using namespace std;



ifstream in("deque.in");

ofstream out("deque.out");



int n,k,v[5000005],dq[5000005];

long long int suma;



int main()

{

    int i,j;

    in >> n >> k;

    for (i=0; i<n; i++)

    {

        in >> v[i];

    }

    int st = 0,dr = -1;

    for (i=0; i<n; i++)

    {

        ///scot din st ceea ce nu mai e in sceventa ceruta

        if (st <= dr && dq[st] == i-k)

        {

            st++;

        }

        ///scot din dr ce e prost

        while (st <= dr && v[i] <= v[dq[dr]])

        {

           dr--;

        }

        dq[++dr] = i;

        if (i >= k-1)

        suma += v[dq[st]];

    }

    out << suma;

    return 0;

}