Cod sursa(job #1373366)

Utilizator DysKodeTurturica Razvan DysKode Data 4 martie 2015 18:17:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <vector>
#include <fstream>
#include <deque>
#include <iostream>
#define ff D.back()

using namespace std;

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

deque <int> D;
int v[5000010];

int main()
{
    int i,n,k,a,b,siz;
    long long int ans;
    ans=0;
    fin>>n>>k;
    for(i=1 ; i<=n ; ++i)
        fin>>v[i];
    for(i=1 ; i<=k ; ++i)
    {
        while( !D.empty() && v[ ff ] > v[ i ] )
            D.pop_back();
        D.push_back(i);
    }

    for(i=k + 1 ; i<=n ; ++i)
    {
        a=D.front();
        b=D.back();
        ans += v[ a ];
        if( i - k  >= a )
            D.pop_front();
        while( !D.empty() && v[ ff ] > v[ i ] )
            D.pop_back();
        D.push_back(i);
    }
    ans += v[ D.front() ];
    fout<<ans;



return 0;
}