Cod sursa(job #2284626)

Utilizator 0738076326Simon Wil 0738076326 Data 17 noiembrie 2018 12:03:53
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.59 kb
#include <fstream>

#include <iostream>
using namespace std;
const int N = 1e5+1;

ifstream f("rmq.in");
ofstream g("rmq.out");

int  rmq[20][N], lg[N];

int main(){
    int n,m,i,j,x,y,p;
    f>>n>>m;
    for(i=1; i<=n; i++)
        f>>rmq[0][i];

    lg[2]=1;
    for(i=3; i<=n; i++)
    lg[i]=lg[i/2]+1;
    for(i=1; i<=lg[n]; i++)
            for(j=1; j<=n-(1<<i)+1; j++)
            rmq[i][j]= min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);

    for(i=1;i<=m; i++){
        f>>x>>y;
        p=lg[y-x+1];
        g<<min(rmq[p][x], rmq[p][y-(1<<p)+1])<<"\n";
    }
return 0;
}