Cod sursa(job #3277807)

Utilizator ana.veronica13Ana Veronica Draghici ana.veronica13 Data 17 februarie 2025 13:53:11
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>

using namespace std;

int sp[100000][20];

int logg( int a ){
  int cnt = 0;
  while( a > 0 ){
    cnt++;
    a /= 2;
  }
  return cnt - 1;
}

int main(){
  ifstream cin( "rmq.in" );
  ofstream cout( "rmq.out" );
  int n, m, i, k, a, b, j, l;
  cin >> n >> m;
  for( i = 0; i < n; i++ ){
    cin >> sp[i][0];
  }
  k = logg(n);
  for( j = 1; j <= k; j++ ){
    for( i = 0; i < n - ( 1 << j ) + 1; i++ )
      sp[i][j] = min ( sp[i][j - 1], sp[i + ( 1 << ( j - 1 ) )][j - 1] );
  }
  for( i = 0; i < m; i++ ){
    cin >> a >> b;
    a--;
    b--;
    l = b - a + 1;
    k = logg( l );
    cout << min( sp[a][k], sp[a + l - ( 1 << k )][k] ) << "\n";
  }
    return 0;
}