Cod sursa(job #3230063)

Utilizator Dragos__1_1Dragos Antohi Dragos__1_1 Data 19 mai 2024 00:06:47
Problema Range minimum query Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
/******************************************************************************

                              Online C++ Compiler.
               Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.

*******************************************************************************/

#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int logaritmi[100001];
int RMQ[100001][22],sir[100001];
int n,i,j,q,a,b;
int main()
{
    f>>n>>q;
    for (i=1;i<=n;i++)
    {   f>>sir[i];
        RMQ[i][0]=sir[i];
    }
    for (i=2;i<=n;i++) logaritmi[i]=logaritmi[i/2]+1;
    for(j=1;j<=logaritmi[n];j++)
    {   //cout<<j<<"      ";
        for(i=1;i<=n;i++)
        {   RMQ[i][j]=min(RMQ[i][j-1],RMQ[i+(1<<(j-1))][j-1]);
            //cout <<RMQ[i][j]<<' ';
        }
        //cout<<'\n';
    }
    while(q--)
    {   f>>a>>b;
    if (a==b)g<< sir[a]<<'\n';
    else
        g<<min(RMQ[a][logaritmi [b-a+1]],RMQ[b+1-(1<<(logaritmi[b-a+1]))][logaritmi[b-a+1]])<<'\n';
    }
    return 0;
}