Cod sursa(job #2514895)

Utilizator anamaria_panait.10Panait Ana-Maria anamaria_panait.10 Data 27 decembrie 2019 11:48:25
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>
#include <deque>
using namespace std;

ifstream in("deque.in");
ofstream out("deque.out");

deque<int> d;
int v[5000001];

int main()
{
    int n, k;
    in >> n >> k;
    for(int i = 0; i < n; i++){
        in >> v[i];
    }
    long long S = 0;
    for(int i = 0; i <= k - 2; i++){
        while(!d.empty() && v[d.back()] > v[i]) //cat timp avem un elem mai mic decat cele din deque le scoatem de la final
            d.pop_back();
        d.push_back(i); //adaugam indicele elem curnet
    }
    for(int i = k - 1; i < n; i++){
        if(i - k == d.front()){ //dc minimul a iesit din secventa il scoatem din deque
            d.pop_front();
        }
        while(!d.empty() && v[i] < v[d.back()]) //cat timp avem un elem mai mic decat cele din deque le scoatem de la final
            d.pop_back();
        d.push_back(i); //adaugam elem curent
        S += v[d.front()];
    }
    out << S;
    return 0;
}