Pagini recente » Cod sursa (job #2145081) | Cod sursa (job #2924605) | Cod sursa (job #1689522) | Rating Maca Mat (supermarket8234) | Cod sursa (job #3217974)
#include <fstream>
using namespace std;
ifstream f("rmq.in");
ofstream g("rmq.out");
int a[100001], rmq[100001][20];
int log(int x)
{
return 32 - __builtin_clz(x) - 1;
}
int main()
{
int n,m,i,j,x,y;
f>>n>>m;
for(i = 1; i <= n; i++)
{
f>>a[i];
}
for(i = 1; i <= n; i++)
{
rmq[i][0] = i;
}
for(j = 1; (1<<j) <= n; j++)
{
for(i = 1; i + (1<<j) - 1 <= n; i++)
{
if(a[rmq[i][j-1]] < a[rmq[i + (1<<(j-1))][j-1]])
{
rmq[i][j] = rmq[i][j-1];
}
else
{
rmq[i][j] = rmq[i + (1<<(j-1))][j-1];
}
}
}
for(i = 1; i <= m; i++)
{
f>>x>>y;
int len = y - x + 1;
len = log(len);
if(a[rmq[x][len]] < a[rmq[y - (1<<len) + 1][len]])
{
g<<a[rmq[x][len]]<<'\n';
}
else
{
g<<a[rmq[y - (1<<len) + 1][len]]<<'\n';
}
}
return 0;
}