Mai intai trebuie sa te autentifici.

Cod sursa(job #2614064)

Utilizator buhaidarius@gmail.comBuhai Darius [email protected] Data 11 mai 2020 10:58:20
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 = 1;
    for(int j=1;pow*2<=n;j++){
        for(int i=0;i+pow*2-1<n;i++)
            v[i][j] = min(v[i][j-1], v[i+pow][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;
}