Cod sursa(job #3126153)

Utilizator corinarobuRobu Corina corinarobu Data 6 mai 2023 11:36:01
Problema Deque Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <limits.h>
#include <fstream>
using namespace std;
ifstream f("deque.in");
ofstream g("deque.out");
int arr[10000], a[10000], fr = 0, back = -1;

void push(int val) {
    while (back >= fr && val < arr[back]) {
        back--;
    }
    arr[++back] = val;
}

void pop(int val) {
    if (arr[fr] == val) {
        fr++;
    }
}

int top() {
    int rez = INT_MAX;
    for (int i = fr; i <= back; i++) {
        rez = min(rez, arr[i]);
    }
    return rez;
}

int main() {
    int n, k;
    f >> n >> k;
    for (int i = 0; i < n; i++) {
        f >> a[i];
    }

    for (int i = 0; i < k; i++) {
        push(a[i]);
    }

    long long sum = top();
    for (int i = k; i < n; i++) {
        push(a[i]);
        pop(a[i-k]);
        sum += top();
    }

    g << sum << endl;

    return 0;
}