Cod sursa(job #2851738)

Utilizator Kawaiimeatball13Russu Mihaela Kawaiimeatball13 Data 19 februarie 2022 10:06:36
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <deque>
using namespace std;

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

deque <int> q;

int n, a[5000001];
int k;

void citire()
{
    fin >> n >> k;
    for(int i = 0; i < n; ++i)
        fin >> a[i];
}

void adaugare(int i)
{
    if(q.empty())
    {
        q.push_back(i);
        return;
    }

    while(!q.empty() && a[q.back()] >= a[i])
    {
        q.pop_back();
    }

    q.push_back(i);
}

long long suma()
{
    long long s = 0;

    for(int i = 0; i < n; ++i)
    {
        adaugare(i);
        //cout << a[q.front()] << ' ';
        if(i - k == q.front())
            q.pop_front();
        if(i >= k - 1)
            s += a[q.front()];
    }

    return s;
}

int main()
{
    citire();
    fout << suma();
    return 0;
}