Cod sursa(job #2144911)

Utilizator PinkiePie1189Preoteasa Mircea-Costin PinkiePie1189 Data 26 februarie 2018 23:39:14
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<stdio.h>
#include<limits.h>
#include<algorithm>
#define MAXN 5000000
#define INF INT_MAX

FILE*fin,*fout;
int deq[MAXN+2],pr=0,ult=-1;
int v[MAXN+2];
int main()
{
	fin=fopen("deque.in","r");
	fout=fopen("deque.out","w");
	int N,K;
	fscanf(fin,"%d%d",&N,&K);
	long long ans=0;
	int firstmin=INF;
	for(int i=1;i<=N;i++)
	{
		fscanf(fin,"%d",&v[i]);
	}

	for(int i=1;i<=N;i++)
	{
		if(pr<=ult)
		{
			while(v[i]<v[deq[ult]] && pr<=ult)
			{
				ult--;
			}
		}
		deq[++ult]=v[i];
		if(deq[pr]<(i-K+1))
		{
			ans+=1LL*v[deq[pr]];
			pr++;
		}

	}
	ans+=1LL*v[deq[pr]];
	fprintf(fout,"%lld",ans);
	fclose(fin);
	fclose(fout);
	return 0;
}