Pagini recente » Cod sursa (job #1619175) | Cod sursa (job #3148673) | Cod sursa (job #2888548) | Cod sursa (job #212664) | Cod sursa (job #3138919)
#include <bits/stdc++.h>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int n,m,i,a[100001],x,y,mat[100001][20],ptr[20],d,p,k,mi;
int putere(int k){
int p=0;
while(k){
++p; k/=2;
}
return p-1;
}
int main()
{
f>>n>>m;
for(i=1;i<=n;++i){
f>>a[i]; mat[0][i]=a[i];
}
ptr[0]=1;
for(i=1;i<=16;++i) ptr[i]=ptr[i-1]*2;
for(k=1;k<=16;++k)
for(i=1;i<=n;++i){
mat[k][i]=min(mat[k-1][i] , mat[k-1][i+ptr[k-1]]);
}
for(i=1;i<=m;++i){
f>>x>>y;
if(x>y) swap(x,y);
p=putere(y-x+1);
mi=min(mat[p][x] , mat[p][y-ptr[p]+1]);
g<<mi<<'\n';
}
return 0;
}