Cod sursa(job #503088)

Utilizator CS-meStanca Marian Ciprian CS-me Data 21 noiembrie 2010 14:01:07
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>
FILE *fin, *fout;
long a[5000010],c[5000010],n,k,i,ic,sc;
long long s;

int main(){

    fin=fopen("deque.in","r");
    fout=fopen("deque.out","w");

    fscanf(fin,"%ld %ld",&n,&k);

	for(i=1;i<=n;i++){
        fscanf(fin,"%ld",&a[i]);
	}

	sc=0;
	ic=1;
	for(i=1;i<=n;i++){
	    while(ic<=sc && a[ c[sc] ]>=a[i]){
            sc--;
	    }
		sc++;
		c[sc]=i;
		if(c[ic]==i-k){
            ic++;
		}
		if(i>=k){
			s=s+a[ c[ic] ];
		}
    }
	fprintf(fout,"%lld",s);
    fclose(fout);
    fclose(fin);
return 0;
}