Cod sursa(job #1218291)

Utilizator MaarcellKurt Godel Maarcell Data 10 august 2014 13:27:27
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <fstream>
#include <iostream>
using namespace std;

int N,M,a[100010],d[100010][18],ql,qr,MIN;

int main(){
    ifstream in("rmq.in");
    ofstream out("rmq.out");
    in >> N >> M;

    int i,j,x,y,l,k;
    for (i=1; i<=N; i++){
        in >> a[i];
        d[i][0]=a[i];
    }

    for (j=1; (1<<j)<=N; j++)
        for (i=1; i+(1<<j)-1<=N; i++){
            d[i][j]=min(d[i][j-1],d[i+(1<<(j-1))][j-1]);
        }

    for (i=1; i<=M; i++){
        in >> x >> y;
        k=y-x+1; l=0;
        while (k/(1<<l)>0) l++;
        l--;
        out << min(d[x][l],d[y-(1<<l)+1][l]) << "\n";
    }

    return 0;
}