Cod sursa(job #2764283)

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

ifstream f("rmq.in");
ofstream g("rmq.out");
int d[101][1000001];
int main()
{
    int n, m, nr = 0, maxi = 0;
    f >> n >> m;
    for(int i = 1; i <= n; i++){
        f >> d[0][i];
    }
    nr = n;
    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 = int(log2(x));
        //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;
}