Pagini recente » Cod sursa (job #2328519) | Cod sursa (job #774585) | Cod sursa (job #2036818) | Cod sursa (job #1649233) | Cod sursa (job #1333456)
#include <cstdio>
#include <algorithm>
using namespace std;
int i,n,a[20][100010],r,j,m,x,y,d,z;
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
scanf("%d",&a[0][i]);
for(i=1;1<<i<=n;++i)
{
r=(1<<(i-1))+1;
if(r==2)
n++;
for(j=1;j<=n-r;j++)
a[i][j]=min(a[i-1][j],a[i-1][j+r-1]);
if(r==2)
n--;
}
for(i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
if(y>x)
{
int aux=x;
x=y;
y=aux;
}
d=x-y+1;
z=0;
while((1<<z+1)<=d)
z++;
printf("%d",min(a[z][y],a[z][y-(1<<z)+d]));
printf("\n");
}
return 0;
}