Cod sursa(job #3134294)

Utilizator FlaviaF7Fota Stefania-Flavia FlaviaF7 Data 28 mai 2023 20:50:46
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.65 kb
#include <iostream>
#include <fstream>
using namespace std;

int n,m,v[100001];
int a[20][100001];
int p[100004];

int main(){
    int i,j,st,dr,k;
    ifstream in("rmq.in");
    ofstream out("rmq.out");
    in>>n>>m;
    for(i=1;i<=n;i++)
        in>>v[i];
    
    for(i=1;i<=n;i++)
        a[0][i]=v[i];
    
    for(k=1;(1<<k)<=n;k++)
        for(i=1;i+(1<<k)-1<=n;i++)
            a[k][i]=min(a[k-1][i],a[k-1][i+(1<<(k-1))]);
    for (i=1;i<=n;i++){
        for (k=0;(1<<k)<=i;k++);
        p[i]=k-1;
    }

    for(i=1;i<=m;i++){
        in>>st>>dr;
        k=p[dr-st+1];
        out<<min(a[k][st],a[k][dr-(1<<k)+1])<<"\n";
    }
}