Cod sursa(job #3294562)

Utilizator robert.barbu27robert barbu robert.barbu27 Data 25 aprilie 2025 14:29:32
Problema Range minimum query Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
#define PERM_SIZE 26
using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[200005][18];
int N, Q;
int query(int x, int y)
{
    int lungime = y-x+1;
    int p = 0;
    while((1<<p) <= lungime){
        p++;
    }
    p--;
    return min(rmq[x][p],rmq[y-(1<<p)+1][p]);
}
int main()
{
    fin >> N >> Q;
    for (int i = 1; i <= N; i++)
    {
        fin >> rmq[i][0];
    }
    // for (int lungime = 1; (1 << lungime) <= N; lungime++)
    // {
    //     for (int i = 1; i + (1 << (lungime - 1)) <= N; i++)
    //     {
    //         rmq[i][lungime] = min(rmq[i][lungime - 1], rmq[i + (1 << (lungime - 1))][lungime - 1]);
    //     }
    // }
    for (int i = 1; i <= Q; i++)
    {
        int x, y;
        fin >> x >> y;
        // fout<<query(x,y)<<'\n';
        int mn = 1e9;
        for(int j=x;j<=y;j++){
            mn = min(mn,rmq[j][0]);
        }
        fout<<mn<<'\n';
    }
}