Cod sursa(job #3199998)

Utilizator fortyforBroscoi Mihai fortyfor Data 3 februarie 2024 10:44:48
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <bits/stdc++.h>
#include <algorithm>
#include <cmath>
#include <climits>
#include <fstream>
#include <vector>
#include <stack>
#include <queue>
#include <deque>
#include <bitset>

#define ull unsigned long long
#define ll long long
#define elif else if
#define uint unsigned int

std::ifstream fin("deque.in");
std::ofstream fout("deque.in");
int x,a[5e6+1];
std::deque<ll> deck;
int main()
{
    uint n,k;
    fin >> n >> k;
    for (uint i=1;i<=n;++i)
    {
        fin >> a[i];
    }
    for (uint i=1;i<=k;++i)
    {
        while (!deck.empty() && a[deck.back()]>=a[i])
            deck.pop_back();
        deck.push_back(i);
    }
    ll sum=a[deck.front()];
    for (uint i=k+1;i<=n;++i)
    {
        uint left = i - k + 1;
        while (!deck.empty() && a[deck.back()]>=a[i])
            deck.pop_back();
        if (!deck.empty() && deck.front() < left)
            deck.pop_front();
        deck.push_back(i);
        sum+= a[deck.front()];
    }
    fout << sum;
    return 0;
}