Cod sursa(job #2761371)

Utilizator mihnea.cazan15mihnea cazan mihnea.cazan15 Data 1 iulie 2021 22:26:32
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int m[100002][20],a[100002];
int main()
{
    int n,t,i,j;
    fin>>n>>t;
    for(i=1;i<=n;i++)
        {
            fin>>a[i];
            m[i][0]=i;
        }
    for(j=1;1<<j<=n;j++)
    {
        for(i=1;i+(1<<j)-1<=n;i++)
        {
            if(a[m[i][j-1]]<=a[m[i+(1<<j)-1][j-1]])
               m[i][j]=m[i][j-1];
            else
                m[i][j]=m[i+(1<<j)-1][j-1];
        }
    }
    while(t--)
    {
        fin>>i>>j;
        int k=log(j-i+1);
        fout<<min(a[m[i][k]],a[m[j-(1<<k)+1][k]])<<'\n';
    }
    return 0;
}