Cod sursa(job #2903415)

Utilizator elenaaa15Dobre Elena elenaaa15 Data 17 mai 2022 16:01:11
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;

ifstream f("rmq.in");
ofstream g("rmq.out");

int n, m, i, j, st, dr, lg2[100001], mat[20][100001], x, y;

int main()
{
    f>>n>>m;

    for(i=1; i<=n; i++)
        f>>mat[0][i];
    lg2[1] = 0;

    for(i=2; i<=n; i++)
        lg2[i] = lg2[i/2] + 1;

    for (i=1; (1<<i) <=n;i++)
        for (j=1;j+ (1 << i) -1 <=n; j++)
            mat[i][j] = min(mat[i-1][j], mat[i-1][j + (1<<(i-1))]);

    for(i=0; i<m ;i++)
    {
        f>>x>>y;
        int itv = y-x+1;
        int k = lg2[itv];
        g<< min(mat[k][x], mat[k][y - (1<<k)+1]) <<'\n';
    }
    return 0;
}