Cod sursa(job #3236208)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 26 iunie 2024 16:19:52
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.52 kb
#include <fstream>

const int N=1e5+1;
std::ifstream f("rmq.in");
std::ofstream g("rmq.out");
#define m(a,b) (a<b?a:b)
int a[17][N];

int main() {
  int n, q;
  f >> n >> q;
  for (int i = 1; i <= n; i++) {
    f >> a[0][i];
  }
  for (int j = 1; j < 17; j++) {
    for (int i = 1; i < n; i++) {
      a[j][i] = m(a[j - 1][i], a[j - 1][i+(1<<(j-1))]);
    }
  }
  while (q--) {
    int l, r;
    f >> l >> r;
    int k = std::__lg(r-l+1);
    g << m(a[k][l],a[k][r-(1<<k)+1]) << '\n';
  }

  return 0;
}