Pagini recente » Cod sursa (job #1429823) | Cod sursa (job #1429822) | Cod sursa (job #2925576) | Cod sursa (job #1429225) | Cod sursa (job #2395858)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
int rmq[100030][20],n,a[100030],m;
void build_rmq(){
for(int i=0;i<n;i++)
rmq[i][0]=a[i];
for(int j=1;(1<<j)<=n;j++)
for(int i=0;(i+(1<<j)-1)<n;i++)
rmq[i][j]=min(rmq[i][j-1],rmq[i+((1<<j-1))][j-1]);
}
int interogare(int i,int j){
int pow=(int)log2(j-i+1);
return min(rmq[i][pow],rmq[j-(1<<pow)+1][pow]);
}
int main()
{
in>>n>>m;
for(int i=0;i<n;i++)
in>>a[i];
build_rmq();
for(int j=1;j<=m;j++){
int st,dr;
in>>st>>dr;
out<<interogare(st-1,dr-1)<<endl;
}
return 0;
}