Cod sursa(job #1165036)

Utilizator Andrei1998Andrei Constantinescu Andrei1998 Data 2 aprilie 2014 13:52:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <deque>

using namespace std;

deque<int> coada;
int v[5000005];

int main()
{
    ifstream cin("deque.in");
    ofstream cout("deque.out");

    int n,k,i;
    cin>>n>>k;

    for(i=1;i<=n;i++)
        cin>>v[i];

    long long int sum=0;
    for(i=1;i<=n;i++)
    {
        while(!coada.empty())
            if(coada.front()+k-1<i)
                coada.pop_front();
            else
                break;

        while(!coada.empty())
            if(v[coada.back()]>=v[i])
                coada.pop_back();
            else
                break;

        coada.push_back(i);

        if(i>=k)
        {
            sum+=v[coada.front()];
            //cout<<"i="<<i<<" am adunat "<<v[coada.front()]<<endl;
        }
    }
    cout<<sum<<'\n';

    cin.close();
    cout.close();
    return 0;
}