Cod sursa(job #2719817)

Utilizator ognean.mihnea12Ognean Mihnea Ionut ognean.mihnea12 Data 10 martie 2021 12:38:21
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
#include <stack>
#include <cstring>
using namespace std;

#define NMAX 100005

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int n, q, i, j, mat[20][NMAX], log[NMAX], x, y, dist;

int main()
{
    fin>>n>>q;
    for(i=1; i<=n; i++)
    {
        fin>>mat[0][i];
    }
    log[0]=log[1]=0;
    for(i=2; i<=n; i++)
        log[i]=log[i>>1]+1;
    for(i=1; i<=log[n]; i++)
    {
        for(j=1; j+(1<<(i-1))<=n; j++)
        {
            mat[i][j]=min(mat[i-1][j],mat[i-1][j+(1<<(i-1))]);
        }
    }
    while(q>0)
    {
        fin>>x>>y;
        dist=log[y-x+1];
        fout<<min(mat[dist][x],mat[dist][y-(1<<dist)+1])<<'\n';
        q--;
    }
    return 0;
}