Cod sursa(job #955311)

Utilizator hrazvanHarsan Razvan hrazvan Data 31 mai 2013 14:54:37
Problema Deque Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.77 kb
#include <stdio.h>
int deque[5000000],d[5000000];
int dreapta(int st,int dr, int a)
{
    int i;
    i=dr-1;
    while(deque[i]>=a&&i>=st)
    {
        i--;
    }
    i++;
    return i;
}

int main()
{
    FILE *in,*out;
    int n,k,i,st=0,dr=-1,a;
    long long rez=0;
    in=fopen("deque.in","r");
    out=fopen("deque.out","w");
    fscanf(in,"%d%d",&n,&k);
    for(i=0;i<n;i++)
    {
        dr++;
        d[dr]=i;
        fscanf(in,"%d",&a);
        deque[dr]=a;
        if(i!=0)
        {
            while(d[dr]-d[st]+1>k)    st++;
            dr=dreapta(st,dr,a);
            d[dr]=i;
            deque[dr]=a;
        }
        if(i+1>=k)
        {
            rez+=deque[st];
        }
    }
    fprintf(out,"%lld",rez);
    return 0;
}