Pagini recente » Cod sursa (job #23636) | Cod sursa (job #774345) | Cod sursa (job #2834706) | Cod sursa (job #2044137) | Cod sursa (job #2752655)
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int const MAX=1e5+3;
int a[MAX];
int mat[MAX][19];
int n,m;
int query(int x,int y)
{
int lung=y-x+1;
int k =0;
while((1<<k) <= lung)
++k;
int pow=k-1;
return min(mat[x][pow+1],mat[y-(1<<(pow))+1][pow+1]);
}
int main()
{
fin>>n>>m;
for(int i =1; i <= n; ++i)
{
fin>>a[i];
mat[i][1]=a[i];
}
for(int j =2; j <= 17; ++j)
for(int i =1; i+ (1<<(j-2)) <= n; ++i){
mat[i][j]=min(mat[i][j-1],mat[i+(1<<(j-2))][j-1]);
}
for(int i =1; i <= m ; ++i)
{
int x ,y;
fin>>x>>y;
fout<<query(x,y)<<"\n";
}
return 0;
}