Pagini recente » Cod sursa (job #2302052) | Cod sursa (job #508437) | Cod sursa (job #490283) | Cod sursa (job #339703) | Cod sursa (job #2358873)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rmq.in");
ofstream fout("rmq.out");
int a[100004][18];
int lg2(int x)
{
int rez=0;
while(x>1)
{
x>>=1;
rez++;
}
return rez;
}
int main()
{
int n, m, i, j;
fin>>n>>m;
for(i=1; i<=n; i++)
{
fin>>a[i][0];
}
int len;
for(j=1; (1<<j)<=n; j++)
{
len = n - (1<<j) + 1;
for(i=1; i<=len; i++)
{
a[i][j] = min(a[i][j-1], a[(1<<(j-1)) + i][j-1]);
}
}
int x, y, l;
for(i=1; i<=m; i++)
{
fin>>x>>y;
l = lg2(y-x);
fout<<min(a[x][l], a[y - (1<<l) + 1][l])<<'\n';
}
}