Cod sursa(job #3296600)

Utilizator D4R1U5Sava Darius D4R1U5 Data 14 mai 2025 15:10:43
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
/*
5 4
1
5
6
4
3
2 4
1 2
3 5
1 4
*/

#include <bits/stdc++.h>

using namespace std;

const int NMAX=100000;
int v[NMAX], rmq[NMAX][15];

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

void build_rmq(int n){
    for (int i=0;i<n;i++)
        rmq[i][0]=v[i];

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

int min_rmq(int i, int j){
    int k=log2(j-i+1);
    return min(rmq[i][k], rmq[j-(1<<k)+1][k]);
}

int main()
{
    ios_base :: sync_with_stdio(false);
    f.tie(NULL);

    int n,q;
    f>>n>>q;
    for (int i=0;i<n;i++){
        f>>v[i];
    }
    build_rmq(n);
    for (int i=0;i<q;i++){
        int x,y;
        f>>x>>y;
        x--;
        y--;
        g<<min_rmq(x,y)<<'\n';
    }
    return 0;
}