Cod sursa(job #2751300)

Utilizator linte_robertLinte Robert linte_robert Data 14 mai 2021 18:48:05
Problema Range minimum query Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    int n, m, i, j, a, b;
    ifstream fin ( "rmq.in" );
    ofstream fout ( "rmq.out" );
    int logg2[100001], r[100001][17];
    fin >> n >> m;
    for( i = 1; i <= n; i++ ) {
      fin >> r[i][0];
    }
    for( i = 1; i <= n; i++ ) {
    	logg2[i] = logg2[i / 2] + 1;
    }
    for( j = 1; j <= logg2[n]; j++ ) {
        for( i = ( 1 << ( j - 1 ) ) + 1; i <= n; i++ ) {
            r[i][j] = min ( r[i - ( 1 << ( j - 1 ) )][j - 1], r[i][j - 1] );
        }
    }
    for ( i = 1; i <= m; i++ ) {
		   fin >> a >> b;
		   j = logg2[b - a + 1] - 1;
		   fout << min ( r[a + ( 1 << j ) - 1][j], r[b][j] ) << endl;
    }
    return 0;
}