Cod sursa(job #2049596)

Utilizator ParketPatrick Josephs Parket Data 27 octombrie 2017 14:39:42
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
#define N 5000000
int v[N], deque[N];
int main()
{
    FILE *f1, *f2;
    f1 = fopen("deque.in","r");
    f2 = fopen("deque.out","w");
    int n, k, i, st = 0, dr = -1;
    long long sum = 0;
    fscanf(f1,"%d%d",&n,&k);
    for(i=0; i<n; i++){
        fscanf(f1,"%d",&v[i]);
        if( st <= dr && deque[st] == i -k ){
            st++;
        }
        while(st<=dr && deque[st] == i -k ){
            st++;
        }
        while(st<=dr && v[i] <= v[deque[dr]]){
            dr--;
        }
        deque[++dr] = i;
        if(i>=k-1){
            sum = sum + v[deque[st]];
        }
    }
    fprintf(f2,"%lld",sum);
    fclose(f1);
    fclose(f2);
    return 0;
}