Pagini recente » Cod sursa (job #750080) | Cod sursa (job #924924) | Cod sursa (job #1771752) | Cod sursa (job #1679168) | Cod sursa (job #837818)
Cod sursa(job #837818)
#include<cstdio>
#include<algorithm>
#define Nmax 131072
#define Lmax 18
using namespace std;
int rmq[Lmax][Nmax], log[Nmax], N, M;
int main() {
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
int k, i, a, b, x, y, poz, dif, rez;
scanf("%d %d",&N,&M);
for(i=1; i<=N; ++i)
scanf("%d",&rmq[0][i]);
log[1] = 0;
for(i=2; i<=N; i++)
log[i] = log[i/2] + 1;
for(k=1; (1<<k)<=N; ++k)
for(i=1; i+(1<<k)-1<=N; ++i) {
a = rmq[k-1][i];
b = rmq[k-1][i+(1<<(k-1))];
rmq[k][i] = min(a, b);
}
for(i=1; i<=M; ++i) {
scanf("%d %d",&x,&y);
dif = y-x+1;
poz = log[dif];
a = rmq[poz][x];
b = rmq[poz][y-(1<<poz)+1];
rez = min(a, b);
printf("%d\n",rez);
}
return 0;
}