Cod sursa(job #813358)

Utilizator Aida_SilviaStrimbeanu Aida Silvia Aida_Silvia Data 15 noiembrie 2012 11:52:03
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<stdio.h>
#include<iostream>
#include<stdlib.h>

using namespace std;

#define maxn 5000001

int v[maxn];
int a[maxn];

void del_front(int &start)
{
	start++;
}

void del_back( int &start, int &finish, int &x) {
	while (  (finish >= start) && (a[v[finish]]>= a[x]) ) finish--;
}
void insert_back( int &finish, int &x)
{
	v[++finish]=x;
}


int main()
{	
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	
	int n, k;
	long long sum=0;
	scanf("%d %d", &n, &k);
	
	int start, finish,i;
	start = 0;
	finish = -1;
	for( int i = 1; i<= n; ++i) 
	{
		
		scanf("%d", &a[i]);
		del_back( start, finish, i);
		insert_back( finish, i);
		if( v[start] == i - k ) 
			del_front(start);
		if( i >= k)
			sum += a[ v[start]];
	}
		
	cout<<sum;
	
	
	return 0;
}