Cod sursa(job #536939)

Utilizator raica_cristiraica dumitru cristian raica_cristi Data 19 februarie 2011 19:57:13
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include<stdio.h>
#include<deque>

using namespace std ;
int a[5000100],n,k;
long long sol;
deque<int> q;
void solve() 
{
    for(int i=1 ; i<=n;i++)
    {
        while ( !q.empty() && a[i]<=a[ q.back() ])
        {
            q.pop_back();
    }
        q.push_back ( i ) ;
        if ( q.front()== i-k )
        q.pop_front();
        if ( i >= k)
        sol+=a[ q.front() ]; 
    }
    printf("%lld\n",sol);
}
inline void read ()
{
    scanf("%d %d",&n,&k);
    for(int i=1 ; i<=n;i++)
    scanf("%d",&a[i]);
}
int main ()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    read();
    solve();
    return 0;
}