Cod sursa(job #3140887)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 10 iulie 2023 14:47:31
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.53 kb
#include<bits/stdc++.h>
using namespace std;
ifstream F("rmq.in");
ofstream G("rmq.out");
int i,n,m,j,k,a[100000],b[18][100001];
int main()
{
    for(F>>n>>m;i<n;F>>a[i++]);
    for(i=0;i<n;b[0][i]=i,++i);
    for(j=1;1<<j<=n;++j)
        for(i=0;i+(1<<j)-1<n;++i)
            if(a[b[j-1][i]]<a[b[j-1][i+(1<<(j-1))]])
                b[j][i]=b[j-1][i];
            else
                b[j][i]=b[j-1][i+(1<<(j-1))];
    for(;m--;F>>i>>j,--i,--j,k=log2(j-i+1),G<<min(a[b[k][i]],a[b[k][j+1-(1<<k)]])<<'\n');
    return 0;
}