Cod sursa(job #1059765)

Utilizator vlad008Stan Vladut Angel vlad008 Data 16 decembrie 2013 22:17:53
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#include "btree.h"
using namespace std;


#include<stdio.h>
struct ddd{
    int val,poz;
}deq[5000000];
char ss[15];
int main(){
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    int n,k,i,j,st,dr,x;
    long long sol=0;
    scanf("%d%d",&n,&k);
    st=dr=0;
    fgets(ss,10,stdin);
    for(i=1;i<=n;++i){
        x=0;
        fgets(ss,10,stdin);
        j=0;
        if(ss[0]=='-')
            ++j;
        for(;'0'<=ss[j] && ss[j]<='9';++j)
            x=x*10+ss[j]-'0';
        if(ss[0]=='-')
            x*=(-1);
        if(deq[st].poz<=i-k)
            ++st;
        while(deq[dr].val>x && dr>=st)
            --dr;
        deq[++dr].val=x;
        deq[dr].poz=i;
        if(i>=k)
            sol+=deq[st].val;
    }
    printf("%lld\n",sol);
    fclose(stdin);
    fclose(stdout);
    return 0;
}