Cod sursa(job #2882342)

Utilizator PescaPescariu Matei Alexandru Pesca Data 31 martie 2022 12:41:09
Problema Range minimum query Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n;
int const N=100005;
int const J=log2(N)+3;
int a[N][J];
void build()
{
    int power=1;
    for(int j=1;j<=J;j++)
    {
        for(int i=1;i<=N;i++)
            if(i+power<=n)
                a[i][j]=min(a[i][j-1],a[i+power][j-1]);
            else
                break;
        power*=2;
    }
}
int main()
{
    int q;
    fin>>n>>q;
    for(int i=1;i<=n;i++)
        fin>>a[i][0];
    build();
    while(q--)
    {
        int x,y;
        fin>>x>>y;
        int val=log2(y-x+1);
        fout<<min(a[x][val],a[y-val][val])<<'\n';
    }
}