Pagini recente » Cod sursa (job #3200041) | Cod sursa (job #2265124) | Cod sursa (job #1850655) | Monitorul de evaluare | Cod sursa (job #2788109)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int A[100001][18],i,k,x,st,dr,n,m,lungime,nr;
int main()
{
fin>>n>>m;
for(i=0;i<n;i++){
fin>>x;
A[i][0] = x;
}
for(k=1;k<=18;k++){
for(i=0;i+(1 << k)<= n ;i++){
A[i][k] = min(A[i][k-1],A[i+(1<<(k-1))][k-1]);
}
}
for(i=1;i<=m;i++){
fin>>st>>dr;
st--;
dr--;
lungime = dr - st + 1;
k = 0;
while(1<< k <= lungime){
k++;
}
fout << min(A[st][k-1],A[dr-(1<<(k-1))+1][k-1]) << '\n';
}
return 0;
}