Cod sursa(job #1388229)

Utilizator rughibemBelcineanu Alexandru Ioan rughibem Data 15 martie 2015 12:14:35
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<stdio.h>
#define MAXN 5000005
FILE *f=fopen("deque.in","r"), *g=fopen("deque.out","w");

long int Q[MAXN], N, K, v[MAXN];
long long int S=0;

void Citire(){
long int i;

    fscanf(f,"%ld %ld\n",&N,&K);
    for(i=1;i<=N;i++)
        fscanf(f,"%ld",&v[i]);
}

void Rezolvare(){
long int p, u, i;

    p = 1; u = 1; Q[1] = 1;
    if( K==1 )
        S += v[1];
    for(i=2;i<=N;i++){

        while( p <= u && v[ Q[u] ] > v[i] )
            u--;
        Q[++u] = i;
        if( Q[p] == i-K )
            p++;
        if( i >= K )
            S += v[ Q[p] ];
    }
    fprintf(g,"%lld\n",S);

}

int main(){

    Citire();
    Rezolvare();

return 0;
}