Cod sursa(job #2042066)

Utilizator ARobertAntohi Robert ARobert Data 17 octombrie 2017 23:56:22
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("rmq.in");
ofstream fout("rmq.out");

int m[20][100006], t[100006];

int main()
{
    int n,l,i,j,x,y,k;
    fin>>n>>l;
    for (i=1;i<=n;i++)
        fin>>m[0][i];
    for (i=2;i<=n;i++)
        t[i]=t[i/2]+1;
    for (i=1;(1<<i)<=n;i++)
        for (j=1;j+(1<<i)<=n+3;j++)
            m[i][j]=min(m[i-1][j+(1<<i-1)],m[i-1][j]);
    for (;l;--l)
    {
        fin>>x>>y;
        k=t[y-x+1];
        fout<<min(m[k][x], m[k][y-(1<<k)+1])<<'\n';
    }
    return 0;
}