Cod sursa(job #3330547)

Utilizator ImphinityComan Razvan Ioan Imphinity Data 20 decembrie 2025 09:53:21
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
#define speed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define cin in
#define cout out
using namespace std;

ifstream in("rmq.in");
ofstream out("rmq.out");

int mat[__lg(100000)][100000];
int main()
{
    speed
    int n, m;
    cin >> n >> m;
    vector<int> v(n+1);

    for (int i = 1; i <= n; i++)
        cin >> v[i];

    for (int i=1; i<=n; i++) {
        mat[0][i] = v[i];
    }
    for (int k=1; (1 << k) <= n; k++) {
        for (int i=1; i+(1<<k)-1 <= n; i++) {
            int j=i + (1<<(k-1));
            mat[k][i]=min(mat[k-1][i],mat[k-1][j]);
        }
    }

    for (int it = 1; it <= m; it++) {
        int x, y;
        cin >> x >> y;
        int k = __lg(y-x+1);
        cout << min(mat[k][x], mat[k][y- (1<<k)+1]) << endl;
    }

}