Cod sursa(job #3247418)

Utilizator schema_227Stefan Nicola schema_227 Data 7 octombrie 2024 16:52:36
Problema Range minimum query Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream in("rmq.in");
ofstream out("rmq.out");

int table[100001][1000];

int main()
{
    int N, M;
    in >> N >> M;
    
    for(int i = 0; i < N; ++i){
        int x;
        in >> x;
        table[i][0] = x;
    }
    for(int j = 1; (1 << j) <= N; ++j){
        for(int i = 0; i + (1 << j) - 1 <= N; ++i){
            table[i][j] = min(table[i][j - 1], table[i + (1 << (j - 1))][j - 1]);
        }
    }
    
    for(int u = 0; u < M; ++u){
        int l, r;
        in >> l >> r;
        --l;
        --r;
        int j = log2(r - l + 1);
        out << min(table[l][j], table[r - (1 << j) + 1][j]) << '\n';
    }
    return 0;
}