Cod sursa(job #3348432)

Utilizator marap2011Paun Mara marap2011 Data 21 martie 2026 21:22:13
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("rmq.in") ;
ofstream fout ("rmq.out") ;

int r[101][100001] ;
int e[100001] ;

void solve ()
{
    int n , q ;
    fin >> n >> q ;
    for ( int i = 1 ; i <= n ; i ++ )
        fin >> r[0][i] ;
    for ( int i = 2 ; i <= n ; i ++ )
        e[i] = 1 + e[i/2] ;
    for ( int i = 1 ; i <= e[n] ; i ++ )
        for ( int j = 1 ; j <= n - ( 1 << i ) + 1 ; j ++ )
            r[i][j] = min ( r[i-1][j] , r[i-1][ j + ( 1 << ( i - 1 ) ) ] ) ;
    while ( q )
    {
        int st , dr ;
        fin >> st >> dr ;
        int len = e[dr-st] ;
        fout << min ( r[len][st] , r[len][dr-(1<<len)+1] ) ;
        fout << '\n' ;

        q -- ;
    }
}
int main()
{
    solve () ;

    return 0;
}