Cod sursa(job #2705736)

Utilizator Andy_ANDYSlatinaru Andrei Alexandru Andy_ANDY Data 13 februarie 2021 11:05:06
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <bits/stdc++.h>
#define ll long long
//#define int ll
using namespace std;

ifstream f ("rmq.in");
ofstream g ("rmq.out");

int mod=666013;

int n,m,rmq[100005][25];
int p2[100005];

main()
{
    f>>n>>m;

    for(int i=2;i<=n;i++) p2[i]=p2[i/2]+1;

    for(int i=1;i<=n;i++) f>>rmq[i][0];

    for(int j=1;(1<<j)<=n;++j)
        for(int i=1;i<=n -(1<<j)+1;i++)
        {
            rmq[i][j]=min(rmq[i][j-1],rmq[i+(1<<(j-1))][j-1]);
        }

    for(int i=1;i<=m;i++)
    {
        int x,y;
        f>>x>>y;
        int d=y-x+1;
        int l = p2[d];
        g<<min(rmq[x][l],rmq[x + d - (1<<l)][l])<<'\n';
    }



}