Pagini recente » Cod sursa (job #1386360) | Cod sursa (job #1804384) | Cod sursa (job #1320416) | Cod sursa (job #3175026) | Cod sursa (job #2669264)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
typedef short int ud;
const int NMAX=1e6+3;
const int LMAX=23;
int arr[NMAX][LMAX];
int logx[NMAX];
void constrLog(){
int i;
for(i=2;i<=NMAX-3;i++)
logx[i]=logx[(i>>1)]+1;
}
int main()
{
ios_base::sync_with_stdio(false);
fin.tie(NULL);
fout.tie(NULL);
constrLog();
int n,m,i,j,k,l,r,x;
fin>>n>>m;
for(i=1;i<=n;i++){
fin>>x;
arr[i][0]=x;
}
k=logx[n];
for(j=1;j<=k;j++)
for(i=1;i+(1<<j)<=n+1;i++)
arr[i][j]=min(arr[i][j-1],arr[i+(1<<(j-1))][j-1]);
while(m--){
fin>>l>>r;
j=logx[r-l+1];
fout<<min(arr[l][j],arr[r-(1<<j)+1][j])<<"\n";
}
fin.close();
fout.close();
return 0;
}