Cod sursa(job #1615366)

Utilizator 2chainzTauheed Epps 2chainz Data 26 februarie 2016 15:22:00
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int Nmax = 100001;
int N,M,lg[Nmax],r[17][Nmax];
int main(){
    for(int i=2;i<Nmax;i++) lg[i]=lg[i>>1]+1;
    in>>N>>M;
    for(int i=1;i<=N;i++) in>>r[0][i];
    for(int e=1;e<=lg[N];e++) for(int i=1;i+(1<<e)<=N+1;i++) r[e][i]=min(r[e-1][i],r[e-1][i+(1<<(e-1))]);
    for(int i=1;i<=M;i++){
        int x,y; in>>x>>y;
        int l=y-x+1;
        out<<min(r[lg[l]][x],r[lg[l]][y-(1<<lg[l])+1])<<'\n';
    }
    return 0;
}