Cod sursa(job #3163035)

Utilizator dragoncrackCandidatu Mario Luca dragoncrack Data 30 octombrie 2023 13:03:25
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>
#include <math.h>
#define DIM 5000001

using namespace std;

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

unsigned int n, k;
long long sum;
int r[DIM];

void build(int power) {
    for (unsigned int p = 1; p <= power; p++) {
        for (unsigned int i = 1; i <= n; i++) {
            unsigned int j = i + (1 << (p - 1));
            if (j <= n) {
                r[i] = min(r[i], r[j]);
            }
            else
                break;
        }
    }
}

int main()
{
    fin >> n >> k;
    unsigned int kPower = (int)log2(k);
    for (unsigned int i = 1; i <= n; i++) {
        fin >> r[i];
    }
    build(kPower);
    for (unsigned int st = 1, dr = k; dr <= n; st++, dr++) {
        sum += min(r[st], r[dr - (1 << kPower) + 1]);
    }
    fout << sum;
}