Cod sursa(job #485960)

Utilizator APOCALYPTODragos APOCALYPTO Data 20 septembrie 2010 07:16:31
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
using namespace std;
#include<iostream>
#include<fstream>

ofstream fout("deque.out");
int N,K;
long long a[5000000],deque[5000000],sum=0;;

void solve()
{int front,back,i;
    front=1;
    back=0;
    for(i=1;i<=N;i++)
    {
        while(front<=back&&a[i]<a[deque[back]]) back--;
        back++;
        deque[back]=i;
        if(deque[front]==i-K) front++;
        if(i>=K) sum+=a[deque[front]];
    }
    fout<<sum<<"\n";
}

void cit()
{int i;
    ifstream fin("deque.in");
    fin>>N>>K;
    for(i=1;i<=N;i++)
    {

     fin>>a[i];
      //cout<<a[i]<<" ";
    }
    fin.close();


}

int main()
{

    cit();
    solve();
    fout.close();

    return 0;
}