Cod sursa(job #2964455)

Utilizator Luka77Anastase Luca George Luka77 Data 13 ianuarie 2023 00:13:20
Problema Deque Scor 25
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define FOR(WHATEVER) for(int i = 1; i <= WHATEVER; ++ i)
using namespace std;

/// INPUT / OUTPUT
const string problem = "deque";
ifstream fin(problem + ".in");
ofstream fout(problem + ".out");

/// GLOBAL VARIABLES
const int NMAX = 5e6+6, MOD = 1e9 + 7, INF = 1e9;
int n, k, ans;
int arr[NMAX];
deque<int>dq;

/// SOLUTION
inline void solution()
{
    for(int i = 1; i <= n; ++ i)
    {
        while(!dq.empty() && arr[dq.back()] >= arr[i])
            dq.pop_back();
        dq.push_back(i);
        if(dq.front() == i - k)
            dq.pop_front();
        if(i >= k)
            ans+=arr[dq.front()];
    }
    fout << ans;
}

/// READING THE INPUT
int main()
{
    ios::sync_with_stdio(false);
    fin.tie(NULL);
    fout.tie(NULL);

    fin >> n >> k;

    for(int i = 1; i <= n; ++ i)
        fin >> arr[i];

    solution();
}