Cod sursa(job #1607689)

Utilizator Balescu_OvidiuBalescu Ovidiu-Gheorghe Balescu_Ovidiu Data 21 februarie 2016 15:23:10
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <stdio.h>
#include <stdlib.h>

int main(){
	unsigned long n,k,*deque,back=0,front=1;
	long long sum=0;
	long *v;
	FILE*f=fopen("deque.in","r");
	fscanf(f,"%lu %lu",&n,&k);
	v=(long*)malloc(n*sizeof(long));
	deque=(unsigned long*)malloc(n*sizeof(unsigned long));
	for(unsigned long i=0;i<n;i++)
		fscanf(f,"%ld",&v[i]);
	deque[0]=0;
	for(unsigned long i=1;i<n;i++){
		while(back<front&&v[deque[front-1]]>v[i])
			front--;
		deque[front++]=i;
		if(deque[back]+k==i)
			back++;
		if(i+2>k)
			sum+=v[deque[back]];
	}
	fclose(f);
	FILE*g=fopen("deque.out","w");
	fprintf(g,"%lld",sum);
	fclose(g);
    return 0;
}