Cod sursa(job #3324564)

Utilizator SkibidiCezarCezar Bolba SkibidiCezar Data 22 noiembrie 2025 15:53:39
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin ("deque.in");
ofstream fout ("deque.out");
int n, k, sum, st, dr;
struct el{
    int v, s, d;
};
el a[5000005];
stack <int> sky;

int main()
{
    fin >> n >> k;
    for(int i = 1; i <= n; i++){
        fin >> a[i].v;
        while(!sky.empty() && a[i].v < a[sky.top()].v){
            a[sky.top()].d = i;
            sky.pop();
        }
        sky.push(i);
    }
    while(!sky.empty()){ sky.pop(); }
    for(int i = n; i >= 1; i--){
        if(a[i].d == 0) a[i].d = n + 1;
        while(!sky.empty() && a[i].v < a[sky.top()].v){
            a[sky.top()].s = i;
            sky.pop();
        }
        sky.push(i);
    }
    for(int i = 1; i <= n; i++){
        //cout << a[i].s << " " << a[i].d << "\n";
        st = max(a[i].s + 1, i - k + 1);
        dr = min(a[i].d - k, i);
        if(st <= dr){
            sum += a[i].v * (dr - st + 1);
        }
    }
    fout << sum;
    return 0;
}