Cod sursa(job #2013760)

Utilizator 3DwArDPauliuc Edward 3DwArD Data 22 august 2017 12:48:27
Problema Range minimum query Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
using namespace std;
#define Nmax 100002
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,q,v[Nmax],sparse[Nmax][20];
int preprocess(){
    for(int i=1;i<=n;i++)sparse[i][0]=v[i];
    for(int j=1;(1<<j)<=n;j++){
        for(int i=1;i+(1<<j)-1<=n;i++){
            sparse[i][j]=min(sparse[i][j-1],sparse[i+(1<<(j-1))][j-1]);
        }
    }

}
int main()
{
    f>>n>>q;
    for(int i=1;i<=n;i++)f>>v[i];
    preprocess();
    for(int i=1;i<=q;i++){
        int a,b,l,k;
        f>>a>>b;
        l=b-a+1;
        k=log(l);
        g<<min(sparse[a][k],sparse[b+1-(1<<k)][k])<<"\n";
    }
    return 0;
}