Cod sursa(job #1065199)

Utilizator NCodeMihai X NCode Data 22 decembrie 2013 22:56:29
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define maxn 5000010
using namespace std;

int n,k;  
int sir[maxn], deck[maxn];
long long suma;
   
int main()
{
  
    ifstream in("deque.in ");
   ofstream out("deque.out");
      
    
    in>>n>>k;
  
      
    for (int i = 1; i <= n; i++) in>>sir[i];
         
   
    int head=1;//front
    int tail=0;//back
   
    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;
}