Pagini recente » Cod sursa (job #1615019) | Cod sursa (job #1218181) | Cod sursa (job #2042566) | Cod sursa (job #1201948) | Cod sursa (job #2752620)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int const MAX=1e5+3;
int LOGA=17;
int a[MAX];
int mat[MAX][17];
int n,m;
int query(int L, int R)
{
int lung=R-L+1;
int k =0;
while((1<<(k+1)) <= lung)
++k;
return min(mat[L][k],mat[R-(1<<k)+1][k]);
}
int main() {
fin>>n>>m;
for(int i =0; i < n; ++i)
{
fin>>a[i];
mat[i][0]=a[i];
}
for(int i =1; i < LOGA; ++i)
for(int j =0; j +(1 <<i) -1 < n; ++j)
mat[j][i]= min(mat[j][i-1],mat[j+(1<<(i-1))][i-1]);
for(int j =1; j <= m; ++j)
{
int x,y;
fin>>x>>y;
fout<<query(x-1,y-1)<<"\n";
}
return 0;
}