Cod sursa(job #2631328)

Utilizator richardionelRichard Ionel richardionel Data 29 iunie 2020 21:54:11
Problema Deque Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <bits/stdc++.h>
using namespace std;

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

const int Nmax = 5000500;
long long suma = 0;
int n,k;
int sir[Nmax];
deque <int> coada;
//vector <int> coada2;

int main()
{
    fin >> n >> k;
    for (int i = 1; i <= n; i++)
        fin >> sir[i];

    for (int i = 1; i <= k; i++){
        while(!coada.empty()){
            if(sir[i] > coada.back())
                break;
            coada.pop_back();
        }
        coada.push_back(sir[i]);
    }
    suma+=coada.front();
    //coada2.push_back(coada.front());

    for (int i = k + 1; i <= n; i++){
        while(!coada.empty()){
            if(sir[i] > coada.back())
                break;
            coada.pop_back();
        }
        coada.push_back(sir[i]);
        if(coada.front() == sir[i - k])
            coada.pop_front();
        suma+=coada.front();
        //coada2.push_back(coada.front());
    }
    fout << suma;

    //fout << endl;
    //for (int i = 0; i < coada2.size(); i++)
        //fout << coada2[i] << " ";
}