Cod sursa(job #1101432)

Utilizator felixiPuscasu Felix felixi Data 8 februarie 2014 14:47:55
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>
#include <deque>

using namespace std;

struct SIR {
    long long poz,val;
};

deque <SIR> d;

void scoate(int val){
    while(  d.empty()==0 && d.back().val>=val ){
        d.pop_back();
    }
}


int main()
{
    ifstream in("deque.in");
    ofstream out("deque.out");
    long long a, n, k, mn, suma= 0;
    SIR nr;
    in>>n>>k;
    for(int i=0; i<k; i++){
        in>>a;
        scoate( a );
        nr.poz= i;
        nr.val= a;
        d.push_back( nr );
    }
    mn= d.front().val;
    suma+= mn;
    for(int i=k; i<n; i++){
        in>>a;
        if( d.front().poz<=i-k ) d.pop_front();
        scoate( a );
        nr.poz= i;
        nr.val= a;
        d.push_back( nr );
        mn= d.front().val;
        suma+= mn;
    }
    out<<suma<<'\n';
    in.close();
    out.close();
    return 0;
}