Cod sursa(job #3276359)

Utilizator amalia_ghicaAmalia Ghica amalia_ghica Data 13 februarie 2025 14:13:02
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>

using namespace std;
int v[100005], sp[100005][35];
int main()
{
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        cin >> v[i];
        sp[i][0] = v[i];
    }
    for(int j = 1; (1<<j) <= n; j++){
        for(int i = 1; i <= n; i++){
            sp[i][j] = min(sp[i][j - 1], sp[i + (1 << (j - 1))][j - 1]);
        }
    }
    int l, r;
    for(int z = 0; z < m; z++){
        cin >> l >> r;
        int x = (int)log2(r - l + 1);
        cout << min(sp[l][x], sp[r - (1 << x) + 1][x]) << "\n";
    }
    return 0;
}