Cod sursa(job #3253691)

Utilizator Iustin_Mircea2010Iustin Mircea Iustin_Mircea2010 Data 4 noiembrie 2024 12:01:48
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>
using namespace std;
int m[100005][19];
int main()
{
    ifstream cin("rmq.in");
    ofstream cout("rmq.out");
    int n, q, a;
    cin >> n >> q;
    for(int i = 1; i <= n; i++){
        cin >> a;
        m[i][0] = a;
    }
    for(int j = 1; j <= log2(n); j++){
        for(int i = 1; i <= n - (1<<j) + 1; i++){
            m[i][j] = min(m[i][j-1], m[i+(1<<(j-1))][j-1]);
        }
    }
    int b;
    for(int i = 1; i <= q; i++){
        cin >> a >> b;
        int x = log2(b - a + 1);
        cout << min(m[a][x], m[b-(1<<x) + 1][x]) << '\n';
    }
    return 0;
}