Cod sursa(job #2613424)

Utilizator stanbianca611Stan Bianca stanbianca611 Data 9 mai 2020 18:09:11
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

using namespace std;
ifstream f ("rmq.in");
ofstream g ("rmq.out");
int m[100005][20];
int v[100005];
int n,q;
int main()
{
    f>>n>>q;
    int log=log2(n);
    int j=1;
    for(int i=1; i<=n; i++)
    {
        f>>v[i];
        m[i][1]=i;
    }
    j=2;
    while(j<=log)
    {
        for(int i=1; i<=n-j+1; i++)
        {
            if(v[m[i][j-1]]<v[m[i+1][j-1]])
                m[i][j]=m[i][j-1];
            else
                m[i][j]=m[i+1][j-1];
        }
        j++;
    }
    for(int i=1; i<=q; i++)
    {
        int x, y;
        f>>x>>y;
        int log=log2(y-x);
        int t=pow(2, log);
        g<<min(v[m[x][log+1]],v[m[y-t+1][log+1]])<<"\n";
    }

    return 0;
}