Pagini recente » Cod sursa (job #3326561) | Cod sursa (job #3311260) | Cod sursa (job #3304150) | Cod sursa (job #414619) | Cod sursa (job #3358627)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int rmq[35][100005];
int v[100005];
int getMin(int x, int y)
{
int l=y-x+1;
int p=31- __builtin_clz(l);
return min(rmq[p][x],rmq[p][y-(1<<p)+1]);
}
int main()
{
int n,m;
fin>>n>>m;
for(int i=1;i<=n;i++)
{
fin>>v[i];
rmq[0][i]=v[i];
}
for(int p=1; (1<<p) <=n ;p++)
{
for(int i=1;i+ (1 << p) - 1<=n;i++)
{
rmq[p][i]=min(rmq[p-1][i],rmq[p-1][i+ (1<<(p-1))]);
}
}
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
fout<<getMin(x,y)<<endl;
}
return 0;
}