Pagini recente » Cod sursa (job #2602417) | Cod sursa (job #391214) | Cod sursa (job #2751733) | Cod sursa (job #703774) | Cod sursa (job #1615366)
#include<fstream>
using namespace std;
ifstream in("rmq.in");
ofstream out("rmq.out");
const int Nmax = 100001;
int N,M,lg[Nmax],r[17][Nmax];
int main(){
for(int i=2;i<Nmax;i++) lg[i]=lg[i>>1]+1;
in>>N>>M;
for(int i=1;i<=N;i++) in>>r[0][i];
for(int e=1;e<=lg[N];e++) for(int i=1;i+(1<<e)<=N+1;i++) r[e][i]=min(r[e-1][i],r[e-1][i+(1<<(e-1))]);
for(int i=1;i<=M;i++){
int x,y; in>>x>>y;
int l=y-x+1;
out<<min(r[lg[l]][x],r[lg[l]][y-(1<<lg[l])+1])<<'\n';
}
return 0;
}