Pagini recente » Cod sursa (job #955872) | Cod sursa (job #1623570) | Cod sursa (job #2709619) | Cod sursa (job #3208797) | Cod sursa (job #3255483)
#include <bits/stdc++.h>
#define log x
#define DIM 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, len, nextj, st, dr, e;
int rmq[20][DIM], log[DIM];
int i, j;
int main(){
fin>>n>>m;
for(i=1; i<=n; i++)
fin>>rmq[0][i];
for(i=1; (1<<i)<=n; i++){
for(j=1; j<=n; j++){
rmq[i][j]=rmq[i-1][j];
nextj=j+(1<<(i-1));
if(nextj<=n && rmq[i][j]>rmq[i-1][nextj])
rmq[i][j]=rmq[i-1][nextj];
}
}
log[1]=0;
for(i=2; i<=n; i++)
log[i]=log[i/2]+1;
while(m--){
fin>>st>>dr;
e=log[dr-st+1];
len=(1<<e);
fout<<min(rmq[e][st], rmq[e][dr-len+1])<<"\n";
}
}