Pagini recente » Cod sursa (job #2675532) | Cod sursa (job #3129796) | Cod sursa (job #2466381) | Cod sursa (job #2745639) | Cod sursa (job #2641076)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("rmq.in");
ofstream cou("rmq.out");
int n,m,N;
int aint[200005];
int Query(int nod, int x, int y, int st, int dr)
{
int m;
if(st == x && dr == y) return aint[nod];
else
{
m = (st + dr) / 2;
if(y <= m) return Query(nod * 2, x, y, st, m);
else if(m + 1 <= x) return Query(nod * 2 + 1, x, y, m + 1, dr);
else return min(Query(nod * 2, x, m, st, m), Query(nod * 2 + 1, m + 1, y, m + 1, dr));
}
}
void citire(){
ci>>n>>m;
N=1;
while(N<n){
N*=2;
}
for(int i=N;i<N+n;i++){
ci>>aint[i];
}
for(int i=N-1;i;i--){
aint[i]=min(aint[2*i],aint[2*i+1]);
}
}
void rez(){
int i;
int a,b;
///cout<<m<<"\n";
for(i=1;i<=m;i++){
ci>>a>>b;
cou<<Query(1,a,b,1,N)<<"\n";
}
}
int main()
{
citire();
rez();
return 0;
}