Pagini recente » Profil dinugafton | Cod sursa (job #199664) | Statistici Macarie Roxana (roxanamacarie) | Cod sursa (job #994540) | Cod sursa (job #1900269)
#include <cstdio>
#include <algorithm>
#include <cmath>
#define Nmax 100003
using namespace std;
int rmq[Nmax][19];
int n,m;
void read()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d %d",&n,&m);
for(int i = 0 ; i < n ; i++)
scanf("%d",&rmq[i][0]);
}
void RMQ()
{
int lim = floor(log2(n));
for(int j = 1 ; j <= lim ; j++)
{
int power = (1 << (j - 1));
for(int i = 0 ; i < n ; i++)
{
if(i+ power < n)
rmq[i][j] = min(rmq[i][j-1],rmq[i+power][j-1]);
else
rmq[i][j] = rmq[i][j-1];
}
}
}
void intrebari()
{
int x ,y;
for(int i = 0 ; i < m ; i++)
{
scanf("%d %d",&x,&y);
x--;
y--;
int ind = (int)log(y-x+1);
int raspuns = min(rmq[x][ind],rmq[y - ( 1 << (ind-1))+1][ind]);
printf("%d\n",raspuns);
}
}
int main()
{
read();
RMQ();
intrebari();
int lim = floor(log2(n)) + 1;
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < lim ; j++)
printf("%d ",rmq[i][j]);
printf("\n");
}
return 0;
}