Cod sursa(job #1464871)

Utilizator TeodorescuStefanEduardTeodorescu Stefan Eduard TeodorescuStefanEduard Data 25 iulie 2015 22:00:10
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<cstdio>
#include<queue>
using namespace std;
struct numar{int val,poz;};
deque<numar> q;
numar aux;
int main(){
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,k,i,x;
    long long sum;
    scanf("%d%d",&n,&k);
    for(i=1;i<=k;i++){
        scanf("%d",&x);
        if(!q.empty())
            while(!q.empty()&&q.back().val>=x)
                q.pop_back();
        aux.val=x;
        aux.poz=i;
        q.push_back(aux);
    }
    sum=q.front().val;
    for(i=k+1;i<=n;i++){
        scanf("%d",&x);
        if(!q.empty())
            while(!q.empty()&&q.back().val>=x)
                q.pop_back();
        aux.val=x;
        aux.poz=i;
        q.push_back(aux);
        if(q.front().poz<i-k+1)
            q.pop_front();
        sum+=q.front().val;
    }
    printf("%lld",sum);
    return 0;
}