Cod sursa(job #2764275)

Utilizator Vlad_Popescu123Popescu Vlad Vlad_Popescu123 Data 20 iulie 2021 10:32:58
Problema Range minimum query Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");
int d[10001][10001];
int main()
{
    int n, m, p = 0, nr = 0, maxi = 0;
    f >> n >> m;
    for(int i = 1; i <= n; i++){
        f >> d[0][i];
        nr++;
    }
    for(int i = 1; nr > 1; i++){
        maxi++;
        int nr2 = 0;
        for(int j = 1; (j + pow(2, (i-1)) <= nr); j++){
            d[i][j] = min(d[i-1][j], d[i-1][j + int(pow(2, i-1))]);
            nr2++;
        }
        nr = nr2;
    }

    for(int k = 1; k <= m; k++){
        int a,b, x, pow2;
        f >> a >> b;
        x = b - a;
        pow2 = pow(2, 0);
        while(pow(2, pow2) <= x){
            pow2++;
        }
        pow2--;

        g << min(d[pow2][a], d[pow2][b - int(pow(2, pow2)) +1]) << "\n";

    }




    return 0;
}