Cod sursa(job #3031621)

Utilizator Andrei137Neculae Andrei-Fabian Andrei137 Data 20 martie 2023 14:37:00
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <queue>
#include <vector>

std::vector<int> v;

inline size_t st(int x)
{
    return (size_t)x;
}

template<typename T>
T read_input(std::ifstream& in)
{
    T temp{};
    in >> temp;
    return temp;
}

int main()
{
    std::ifstream in("deque.in");
    int n{ read_input<int>(in) };
    int k{ read_input<int>(in) };
    for (int i = 0; i < n; ++i)
    {
        v.push_back(read_input<int>(in));
    }
    in.close();
    std::deque<int> d;
    long long s{0};
    for (int i = 0; i < n; ++i)
    {
        while (!d.empty() && v[st(i)] <= v[st(d.back())])
        {
            d.pop_back();
        }
        d.push_back(i);
        if (d.front() == i - k)
        {
            d.pop_front();
        }
        if (i >= k - 1)
        {
            s += v[st(d.front())];
        }
    }
    std::ofstream out("deque.out");
    out << s;
    out.close();
    return 0;
}

// https://infoarena.ro/job_detail/3031577