Pagini recente » Cod sursa (job #18964) | Cod sursa (job #2005153) | Cod sursa (job #2382139) | Cod sursa (job #2631831) | Cod sursa (job #3278001)
#include <fstream>
using namespace std;
const int N = 1e2;
const int LMAX = 17;
int rmq[LMAX][N+1];
int log [N+1];
ifstream cin("rmq.in");
ofstream cout("rmq.out");
int main()
{
int n,q;
cin>>n>>q;
for (int i = 1; i<=n; i++){
cin>>rmq[0][i];
}
for (int i = 2; i<=N; i++){
log[i]=log[i/2]+1;
}
for (int i = 1; i<=log[n]; i++){
for (int j = 1; j<=n-(1<<i)+1; j++){
rmq[i][j]= min(rmq[i-1][j], rmq[i-1][j+(1<<(i-1))]);
}
}
for (int i = 1; i<=q; i++){
///AD GOES HERE
int a,b;
cin>>a>>b;
int k = log[b-a+1];
cout<<min(rmq[k][a], rmq[k][b-(1<<k)+1])<<'\n';
}
return 0;
}