Cod sursa(job #2631300)

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

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

long long suma = 0;
int n,k;
vector <int> sir;
deque <int> coada;
//vector <int> coada2;

int main()
{
    fin >> n >> k;
    while(n--){
        int numar;
        fin >> numar;
        sir.push_back(numar);
    }

    for (int i = 0; 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; i < sir.size(); 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] << " ";
*/
}