Cod sursa(job #2575255)

Utilizator anamariatoaderAna Toader anamariatoader Data 6 martie 2020 12:28:09
Problema Range minimum query Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>

using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");

int n,m,q,i,j,x,y,lg,mi,log[100005],v[100005][18];

int main(){
    fin>>n>>m;
    for(i=2;i<=n;i++)
        log[i]=log[i/2]+1;
    for(i=1;i<=n;i++){
        fin>>x;
        v[i][0]=x;
        for(j=1;j<=log[i];j++)
            v[i-(1<<j)+1][j]=min(v[i-(1<<j)+1][j-1],v[i-(1<<(j-1))+1][j-1]);
    }
    for(q=1;q<=m;q++){
        fin>>x>>y;
        lg=log[y-x+1];
        mi=min(v[x][lg],v[y-(1<<lg)+1][lg]);
        fout<<mi<<'\n';
    }
    return 0;
}