Cod sursa(job #3134177)

Utilizator Cipy34Harnagea Ciprian Cipy34 Data 28 mai 2023 17:41:16
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[1000001][17];
int main()
{
    //ifstream fin("nr.txt");
    ifstream fin("rmq.in");
    ofstream fout("rmq.out");
    int n, m, a = 2, b = 1, c, d, e;
    fin>>n>>m;
    for(int i = 1; i <= n; i++)
        fin>>v[i][0];

    while(a <= n){
        for(int i = 1; i <= n; i++)
            v[i][b] = min(v[i][b-1], v[i+a/2][b-1]);
        b++;
        a *= 2;
    }

    for(int i = 1; i <= m; i++){
        fin>>c>>d;
        a = 1;
        e = 0;
        while(a*2 <= d-c+1){
            a = a*2;
            e++;
        }
        fout<<min(v[c][e], v[d-a+1][e])<<"\n";
    }
    fout.close();
    fin.close();
    return 0;
}