Cod sursa(job #3037692)

Utilizator stefypluStefan Plugaru stefyplu Data 26 martie 2023 10:25:53
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int m[21][100002], n, q;
int crt, x, lung, st, dr, val;
int main ()
{
    cin>>n>>q;
    for (int i=1; i<=n; i++)
        cin>>m[1][i];
    crt=1; val=(int)log2(n);
    val++;
    for (int i=2; i<=val; i++, crt*=2)
        for (int j=1; j<=n-crt+1; j++)
            m[i][j]=min(m[i-1][j], m[i-1][j+crt]);
    while (q--)
    {
        cin>>st>>dr;
        lung=dr-st+1;
        crt=(int)log2(lung);
        x=1<<(crt-1);
        cout<<min(m[crt][st], m[crt][dr-x+1])<<'\n';
    }
    return 0;
}