Cod sursa(job #2849835)

Utilizator Ana100Ana-Maria Tomoiala Ana100 Data 15 februarie 2022 20:48:13
Problema Range minimum query Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream cin("rmq.in");
ofstream cout("rmq.out");
const int NMAX=1e5+1;
int r[18][NMAX],log[NMAX],v[NMAX];
int main()
{
    int n,t;
    cin>>n>>t;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    log[1]=0;
    for(int i=2;i<=n;i++)
    {
        log[i]=1+log[i/2];
    }
    for(int j=1;j<=n;j++)
    {
        r[0][j]=v[j];
    }
    for(int i=1;i<=log[n];i++)
    {
        for(int j=(1<<i);j<=n;j++)
        {
           r[i][j]=min(r[i-1][j-(1<<(i-1))],r[i-1][j]);
           cout<<r[i][j]<<" ";
        }
        cout<<endl;
    }
    //cout<<r[2][4]<<endl;
    for(int i=1;i<=t;i++)
    {
        int st,dr;
        cin>>st>>dr;
        int e=log[dr-st+1];
        cout<<min(r[e][st+(1<<e)-1],r[e][dr])<<endl;
    }
    return 0;
}