Pagini recente » Cod sursa (job #2052514) | Cod sursa (job #822091) | Cod sursa (job #1830940) | Monitorul de evaluare | Cod sursa (job #235725)
Cod sursa(job #235725)
#include <stdio.h>
#define Nmax 100100
int t[Nmax][17],n,m;
inline int min(int a,int b)
{
if (a<b) return a;
return b;
}
int main()
{
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for (int i=1;i<=n;++i)
scanf("%d", &t[i][0]);
for (int j=1;(1<<j)<=n;++j)
for (int i=1;i<=n;++i) if (i+(1<<(j-1))<=n) t[i][j] = min(t[i][j-1],t[i+(1<<(j-1))][j-1]);
int x,y;
for (int i=1;i<=m;++i)
{
scanf("%d%d",&x,&y);
int ret=123456789;
for (int k=16;k>=0;--k) if(x+(1<<k)-1<=y)
{
ret = min(ret,t[x][k]);
x += (1<<k);
}
printf("%d\n", ret);
}
return 0;
}