Pagini recente » Cod sursa (job #271536) | Cod sursa (job #2795970) | Cod sursa (job #2679344) | Cod sursa (job #1412355) | Cod sursa (job #1563986)
#include <bits/stdc++.h>
using namespace std;
#define endl "\n"
const char* IN = "rmq.in";
const char* OUT = "rmq.out";
const int MAX_SIZE = 100013;
int n,m,l,r;
int RMQ[17][MAX_SIZE];
int main(void){
ifstream cin(IN);
ofstream cout(OUT);
cin>>n>>m;
for (int i=1;i<=n;++i)
cin>>RMQ[0][i];
for (int i=1;i<=(int)log2(n);++i)
for (int j=1;j+(1<<i)<=n;++j)
RMQ[i][j] = min(RMQ[i-1][j],RMQ[i-1][j+(1<<(i-1))]);
while(m--){
cin>>l>>r;
int k = (int)log2(r-l+1);
cout<<min(RMQ[k][l],RMQ[k][r-(1<<k)+1])<<endl;
}
return 0;
}