Cod sursa(job #1082898)

Utilizator Aleks10FMI - Petrache Alex Aleks10 Data 15 ianuarie 2014 01:04:52
Problema Range minimum query Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
int n,m,i,a[20][100001],j,x,y,nr;
int main()
{
    ifstream f("rmq.in");
    ofstream g("rmq.out");
    f>>n>>m;
    for(i=1;i<=n;i++){
        f>>a[0][i];
    }

    for(i=n;i>=1;i--){
        for(j=1;(1<<j)<=n;j++){
            a[j][i]=min(a[j-1][i],a[j-1][i+(1<<(j-1))]);
          //  cout<<a[j][i]<<" ";
        }
        //cout<<endl;
    }

    for(i=0;i<m;i++){
        f>>x>>y;
        nr=(int)log2(y-x+1);
        g<<min(a[nr][x],a[nr][y-(1<<nr)+1])<<'\n';
    }
    return 0;
}