Cod sursa(job #3137667)

Utilizator verde.cristian2005Verde Flaviu-Cristian verde.cristian2005 Data 14 iunie 2023 11:09:12
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;

#ifndef HOME
    ifstream in("deque.in");
    ofstream out("deque.out");
    #define cin in
    #define cout out
#endif // HOME

int v[5000001];

int decc[5000001], st = 0, dr = -1;

void baga(int poz)
{
    while(dr >= st && v[poz] <= v[decc[dr]])
        dr--;
    decc[++dr] = poz;
}

void scoate(int poz)
{
    if(decc[st] == poz)
        st++;
}

int main()
{
#ifdef HOME
    freopen("test.in", "r", stdin);
    freopen("test.out", "w", stdout);
#endif
    int n, k;
    long long rasp = 0;
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
        cin >> v[i];
    for(int i = 1; i <= k - 1; i++)
        baga(i);
    for(int i = k; i <= n; i++)
    {
        baga(i);
        rasp += v[decc[st]];
        scoate(i - k + 1);
    }
    cout << rasp;
    return 0;
}