Cod sursa(job #2264937)

Utilizator dragos99Homner Dragos dragos99 Data 20 octombrie 2018 13:11:42
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<deque>
using namespace std;
    ifstream f("deque.in");
    ofstream g("deque.out");

deque<long long> minElem, pozElem;

int main(){

long n, m;
long ok, x;
long long  sum = 0;

f>>n>>m;
f>>x;
minElem.push_back(x);
pozElem.push_back(0);
for(long i = 1 ; i < m ; i++ ){
    f>>x;
    ok = 0;
    while(!minElem.empty() && minElem.back() > x){
        minElem.pop_back();
        pozElem.pop_back();
    }
    minElem.push_back(x);
    pozElem.push_back(i);
}
sum += minElem.front();
for(long i = m ; i < n ; i++){
    f>>x;
    ok = 0;
    if(pozElem.front() <= i - m){
        minElem.pop_front();
        pozElem.pop_front();
    }
    while(!minElem.empty() && minElem.back() > x){
        minElem.pop_back();
        pozElem.pop_back();
        ok = 1;
    }
    minElem.push_back(x);
    pozElem.push_back(i);

    sum += minElem.front();
}

g<<sum;

return 0;
}