Cod sursa(job #2145157)

Utilizator tanasaradutanasaradu tanasaradu Data 27 februarie 2018 10:12:17
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
const int Nmax = 5000005;
int n , k , a[Nmax];
deque < int > Q;
long long sum = 0;
int main()
{
    fin >> n >> k;
    for(int i = 1 ; i <= k ; i++)
    {
        fin >> a[i];
        while(! Q . empty() && a[Q . back()] >= a[i])
            Q . pop_back();
        Q . push_back(i);
    }
    ///cout << a[Q . front()] << " ";
    sum += a[Q . front()];
    for(int i = k + 1 ; i <= n ; i++)
    {
        fin >> a[i];
        while(! Q . empty() && a[Q . back()] >= a[i])
            Q . pop_back();
         Q . push_back(i);
        if(i - Q . front() >= k)
            Q . pop_front();
        sum += a[Q . front()];

    }
    fout << sum << "\n";
    fin.close();
    fout.close();
    return 0;
}