Cod sursa(job #2553830)

Utilizator Alin_StanciuStanciu Alin Alin_Stanciu Data 22 februarie 2020 12:14:57
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

int n, k;
vector<vector<int>> M;

void Rmq()
{
    int e = 1, p = 2;
    while (p < k)
    {
        for (int i = 0; i < n - p + 1; ++i)
            M[e][i] = min(M[e - 1][i], M[e - 1][i + (p >> 1)]);
        ++e;
        p <<= 1;
    }
}

int main()
{
    fin >> n >> k;
    int e = 0, p = 1;
    while (p < k)
    {
        M.emplace_back(vector<int>(n - p + 1));
        ++e;
        p <<= 1;
    }
    for (int i = 0; i < n; ++i)
        fin >> M[0][i];
    Rmq();
    long long s = 0;
    --e, p >>= 1;
    for (int i = 0; i < n - k + 1; ++i)
        s += min(M[e][i], M[e][i + k - p]);
    fout << s;

    return 0;
}