Cod sursa(job #806991)

Utilizator UnforgivenMihai Catalin Botezatu Unforgiven Data 3 noiembrie 2012 20:31:15
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <cstdlib>
#include <stdio.h>
#define SIZE 5000001

int deq[SIZE];
int vect[SIZE];

int main(int argc, char argv[])
{
    FILE *input = fopen("deque.in","r");
    FILE *output = fopen("deque.out","w");

    int n;
    int k;

    long long sum = 0;

    fscanf(input,"%d",&n);
    fscanf(input,"%d",&k);

    for (int i=0;i<n;i++)
    {
        fscanf(input,"%d",&vect[i]);
    }

    int start = 0;
    int end = -1;
    for (int i=0;i<n;i++)
    {
        int ie = end;
        int is = start;

        while (end >= start && vect[i] <= vect[deq[end]])
        {
            end--;
        }

        end++;
        deq[end] = i;

        if (deq[start] == i-k) start++;

        if (i >= k-1) sum += vect[deq[start]];

    }

    fprintf(output,"%lld",sum);
    fclose(input);
    fclose(output);
}