Pagini recente » Cod sursa (job #1033627) | Cod sursa (job #962163) | Cod sursa (job #2298227) | Cod sursa (job #676636) | Cod sursa (job #339278)
Cod sursa(job #339278)
#include <cstdio>
#define N 100001
int A[N][17];
int main()
{
int n,m,log,i,j;
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
scanf("%d%d",&n,&m);
for (i=1; i<=n; i++) scanf("%d",&A[i][0]);
//preprocesare
for (log=1; 1<<log <= n; log++)
for (j=1; j<=n-(1<<log)+1; j++)
if (A[j][log-1] < A[j+(1<<(log-1))][log-1]) A[j][log]=A[j][log-1];
else A[j][log]=A[j+(1<<(log-1))][log-1];
//query-uri
while (m--)
{
scanf("%d%d",&i,&j);
for (log=0; 1<<(log+1) <= (j-i+1); log++);
if (A[i][log]<A[j-(1<<log)+1][log]) printf("%d\n",A[i][log]);
else printf("%d\n",A[j-(1<<log)+1][log]);
}
return 0;
}