Cod sursa(job #2614068)

Utilizator buhaidarius@gmail.comBuhai Darius [email protected] Data 11 mai 2020 11:00:50
Problema Range minimum query Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>

#define MAXV 100001

using namespace std;

int main() {
    ifstream fin("rmq.in");
    ofstream fout("rmq.out");

    int n, m, x, y;
    int v[MAXV][20];
    /// Read data
    fin>>n>>m;
    for(int i=0;i<n;i++){
        fin>>x;
        v[i][0] = x;
    }
    int pow = 2;
    for(int j=1;pow<=n;j++){
        for(int i=0;i+pow-1<n;i++)
            v[i][j] = min(v[i][j-1], v[i+pow/2][j-1]);
        pow*=2;
    }

    for(int i=0;i<m;i++){
        fin>>x>>y;
        x--;y--;
        int lg = static_cast<int>(log2(y-x+1));
        fout<<min(v[x][lg], v[y-lg*2+1][lg])<<'\n';
    }
    return 0;
}