Pagini recente » Cod sursa (job #1803871) | Cod sursa (job #477359) | Cod sursa (job #2248255) | Cod sursa (job #2513317) | Cod sursa (job #3177724)
#include <bits/stdc++.h>
using namespace std;
ifstream in ("rmq.in");
ofstream out("rmq.out");
#define maxN 100000
#define LOG 18
int rmq[LOG][maxN+1];
int logs[maxN+1];
int main(){
int n,q;
in>>n>>q;
for(int i=1;i<=n;i++){
in>>rmq[0][i];
}
logs[1]=0;
for(int i=2;i<=maxN;i++){
logs[i]=logs[i/2]+1;
}
for(int j=1;(1<<j)<=n;j++){
for(int i=1;i<=n-(1<<j)+1;i++){
rmq[j][i]=min(rmq[j-1][i],rmq[j-1][i+(1<<(j-1))]);
}
}
for(int z=1;z<=q;z++){
int x,y;
in>>x>>y;
out<<min(rmq[logs[y-x+1]][x], rmq[logs[y-x+1]] [y - (1<<logs[y-x+1]) + 1])<<'\n';
}
}