Cod sursa(job #2514886)

Utilizator anamaria_panait.10Panait Ana-Maria anamaria_panait.10 Data 27 decembrie 2019 11:34:11
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 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];
    }
    int S = 0;
    for(int i = 0; i < n; i++){
        while(!d.empty() && v[i] <= d.back()) //cat timp avem un elem mai mic decat cele din deque le scoatem de la final
            d.pop_back();
        d.push_back(v[i]); //adaugam elem curnet
        if(!d.empty() && v[i - k] == d.front()){ //dc minimul a iesit din secventa il scoatem din deque
            d.pop_front();
        }
        if(i >= k - 1){ //dc avem o secventa de k atunci adaugam minimul la suma
            S += d.front();
        }
    }
    out << S;
    return 0;
}