Cod sursa(job #1389971)

Utilizator andreeadeacAndreea Ioana Deac andreeadeac Data 16 martie 2015 19:13:42
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <fstream>
using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

int n,k,v[5000001],d[5000001],st,dr;
long long sum;

void stanga(int i){
    if(i - d[st] == k)
        st++;
}

void dreapta(int i){
    while(st <= dr && v[i]<=v[d[dr]] )
        dr--;
    d[++dr]=i;
}

/*
1 	2 	3 	4 	5 	6 	7 	8	9
-7	9	2	4	-1	5	6	7	1

    9

-7 2 -1 -1 -1 5 1
*/

int main()
{
    in>>n>>k;
    int i;
    for(i=1;i<=n;i++){
        in>>v[i];
        stanga(i);
        dreapta(i);
        if(i>=k)
            sum+=v[d[st]];
    }
    out<<sum;
    return 0;
}