Cod sursa(job #657922)

Utilizator slycerdan dragomir slycer Data 7 ianuarie 2012 16:58:04
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
/* 
 * File:   deque.in
 * Author: slycer
 *
 * Created on January 7, 2012, 4:17 PM
 */

#include <cstdlib>
#include <fstream>
#include <iostream>
#include <vector>
#include <list>

using namespace std;

/*
 * 
 */
int main(int argc, char** argv) {

    ifstream input("deque.in");
    ofstream output("deque.out");
    int n,k;
    input >> n >> k; 
    //list<int> q; 
    int * q = new int[ n+1 ];
    int a=0,b=0;
    
    long long sol=0; 
    int * data = new int[n]; 
    for ( int i=0; i<n; i++ ){
        input >> data[i]; 
        if ( i-k>=0 ){
            if (q[a] == data[i-k] ){
                //q.pop_front();
                a++;
            }
        }
        while ( b-a>0 && q[b-1] > data[i] ){
            b--;
        }
        q[b++] = data[i]; 
        if( i>=k-1 ) {
              //  cout << q.front() << "\n";
                sol += q[a]; 
        }
    }
    output << sol; 
    return 0;
}