Cod sursa(job #1382718)

Utilizator cella.florescuCella Florescu cella.florescu Data 9 martie 2015 15:06:26
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>
#include <stdlib.h>
int deque[5000000], v[5000000];
int main()
{
    FILE *fin, *fout;
    int n, i, b, e, k;
    long long suma;
    fin=fopen("deque.in", "r");
    fscanf(fin, "%d%d", &n, &k);
    e=-1;
    for(i=0; i<k; i++){
      fscanf(fin, "%d", &v[i]);
      while(e>=0 && v[i]<v[deque[e]])
        --e;
      deque[++e]=i;
    }
    b=0; suma=v[deque[b]];
    for(i=k; i<n; i++){
      fscanf(fin, "%d", &v[i]);
      if(i==deque[b]+k)
        ++b;
      while(e>=b && v[i]<v[deque[e]])
        --e;
      deque[++e]=i;
      suma+=(long long)v[deque[b]];
    }
    fclose(fin);
    fout=fopen("deque.out", "w");
    fprintf(fout, "%lld\n", suma);
    fclose(fout);
    return 0;
}