Cod sursa(job #1053083)

Utilizator Emanuel9Dumitru Emanuel Cristian Emanuel9 Data 12 decembrie 2013 10:14:18
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <deque>
#include <stdio.h>
#include <stdlib.h>

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    std:: deque <int> mydeque;

    int n,k;
    int *a;
    long long s = 0;
    scanf("%d%d",&n,&k);
    a=(int *)malloc(n*sizeof(int));
    for(int i=0;i<n;i++){
        scanf("%d",&(a[i]));
        while(!mydeque.empty() && a[mydeque.back()] > a[i])
            mydeque.pop_back();
        mydeque.push_back(i);
        if(i>=k-1){
            s+=a[mydeque.front()];
            if(mydeque.front() == i+1-k)
                mydeque.pop_front();

        }

    }

    printf("%lld",s);
    fclose(stdin);
    fclose(stdout);
    return 0;
}