Cod sursa(job #2626122)

Utilizator maria.ianiIani Maria maria.iani Data 6 iunie 2020 12:00:48
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.6 kb
#include <iostream>
#include <fstream>
#include <cmath>

using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,rmq[20][100002],i,j,k,a,b;
int main()
{ 
	f>> n >> m;
	for (int i = 1; i <= n; i++)
		f>> rmq[0][i];
	for (int i = 1; (1 << i) <= n; i++)
		for (int j = 1; j <= n; j++)
			rmq[i][j] = min(rmq[i - 1][j], rmq[i - 1][j + (1 << (i - 1))]);
 
    while (m)
    {
        f>>a>>b;
        k=0;
        while ((1<<k) <=b+1-a)
            k++;
        k--;
        g<<min(rmq[k][a],rmq[k][b+1-(1<<k)])<<'\n';
        m--;
    }

    f.close();
    g.close();
	
}