Cod sursa(job #2107552)

Utilizator CozehNita Horia Teodor Cozeh Data 17 ianuarie 2018 15:22:59
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <deque>
#define mp make_pair
using namespace std;

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

int v[1000001];
int n,k;
deque<pair<int,int> > dq;

void getNr(){
    long long int sum=0;
    for(int i = 1; i<=k ; i++){
        pair<int,int>x = mp(v[i],i);
        while(!dq.empty() && dq.back().first > v[i]) {dq.pop_back();}
        dq.push_back(x);
    }     sum+=dq.front().first;

    for(int i = k+1; i <= n; i++){
        while(dq.front().second <= i-k) {dq.pop_front();}
        pair<int,int>x = mp(v[i],i);
        while(!dq.empty() && dq.back().first > v[i]) {dq.pop_back();}
        dq.push_back(x);
        sum+=dq.front().first;
    }
    fout<<sum;
}

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

    getNr();

}