Cod sursa(job #2465996)

Utilizator NashikAndrei Feodorov Nashik Data 1 octombrie 2019 10:19:49
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.99 kb
//#include <iostream>
#include <fstream>
#include <deque>
using namespace std;
deque <pair<int,int> > dq;
int v[5000005];
int main()
{
    ifstream cin("deque.in");
    ofstream cout("deque.out");
    long long n,k,sum=0;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    for(int i=1;i<=k;i++){
        if(dq.empty()==false)
        while(dq.back().first>v[i]){
            dq.pop_back();
            if(dq.empty()==true)
                break;
        }
        dq.push_back(make_pair(v[i],i));
    }

    sum+=dq.front().first;
    for(int i=k+1;i<=n;i++){
        if(dq.empty()==false)
        while(dq.front().second<=i-k){
            dq.pop_front();
            if(dq.empty()==true)
                break;
        }
        if(dq.empty()==false)
        while(dq.back().first>v[i]){
            dq.pop_back();
            if(dq.empty()==true)
                break;
        }
        dq.push_back(make_pair(v[i],i));
        sum+=dq.front().first;
    }
    cout<<sum;
    return 0;
}