Cod sursa(job #1062095)

Utilizator NCodeMihai X NCode Data 20 decembrie 2013 18:14:22
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <fstream>
#define maxn 5000000
using namespace std;

int sir[maxn], deck[maxn];
long long suma;
 
int main()
{

    ifstream in("deque.in ");
  ofstream  out("deque.out");
    
    int n,k;
 	in>>n>>k;

 	
    for (int i = 1; i <= n; i++) in>>sir[i];
       
 
    int head=1;
    int tail=0;
 
    for (int i = 1; i <= n; i++)
    {
        
        
        while ( head <= tail && sir[i] <= sir[ deck[tail] ] ) 
			tail--;    
        
        deck[++tail] = i;
        
        if (deck[head] == i-k) 
			head++;
        
        if (i >= k) 
			suma += sir[ deck[head] ];    
    }
 

     out<<suma<<"\n";
    
 	 in.close();
 	out.close();
    return 0;
}