Pagini recente » Cod sursa (job #738097) | Cod sursa (job #866906) | Rating Claudiu Negru (astroman389) | Cod sursa (job #1013760) | Cod sursa (job #3160043)
#include <bits/stdc++.h>
#define DIM 100001
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int n, m, st, dr, E;
int i, j;
int rmq[20][DIM], e[DIM];
int main(){
fin>>n>>m;
e[1]=0;
for(i=1; i<=n; i++)
fin>>rmq[0][i];
for(i=2; i<=n; i++)
e[i]=1+e[i/2];
for(i=1; (1<<i)<=n; i++)
for(j=1; j<=n; j++){
rmq[i][j]=rmq[i-1][j];
if(j+(1<<(i-1))<=n && rmq[i][j]>rmq[i-i][j+(1<<(i-1))])
rmq[i][j]=rmq[i-1][j+(1<<(i-1))];
}
for(i=1; i<=m; i++){
fin>>st>>dr;
E=e[dr-st+1];
fout<<min(rmq[E][st], rmq[E][dr-(1<<E)+1])<<"\n";
}
}