Cod sursa(job #3278001)

Utilizator Programmer0101Tudor Oancea Programmer0101 Data 18 februarie 2025 14:23:02
Problema Range minimum query Scor 20
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>

using namespace std;

const int N = 1e2;
const int LMAX = 17;
int rmq[LMAX][N+1];
int log [N+1];

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


int main()
{
    int n,q;

    cin>>n>>q;

    for (int i = 1; i<=n; i++){
        cin>>rmq[0][i];
    }

    for (int i = 2; i<=N; i++){
        log[i]=log[i/2]+1;
    }

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

        }
    }

    for (int i = 1; i<=q; i++){
        ///AD GOES HERE

        int a,b;
        cin>>a>>b;

        int k = log[b-a+1];


        cout<<min(rmq[k][a], rmq[k][b-(1<<k)+1])<<'\n';
    }


    return 0;
}