Cod sursa(job #3249504)

Utilizator Andreea11KPavel Andreea Andreea11K Data 16 octombrie 2024 18:14:21
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
using namespace std;
ifstream cin ("rmq.in");
ofstream cout("rmq.out");
int logn=17;
int main()
{
    int n, q;
    cin >> n >> q;
    int log[n+2];
    log[1]=0;
    for(int i=2; i<=n; i++)
        log[i]=log[i/2]+1;
    int a[logn+2][n+2];
    for(int i=0; i<n; i++)
        cin >> a[0][i];
    for(int i=1; i<=logn; i++)
        for(int j=0; j+(1<<i)-1<n; j++)
            a[i][j]=min(a[i-1][j], a[i-1][j+(1<<i-1)]);
    int l, r;
    for(int i=1; i<=q; i++)
    {
        cin >> l >> r;
        r--;
        l--;
        int p=log[r-l+1];
        cout << min (a[p][l], a[p][r - (1 << p) + 1]) << '\n';
    }
    return 0;
}