Pagini recente » Cod sursa (job #1882026) | Cod sursa (job #1262053) | Cod sursa (job #395061) | Cod sursa (job #1632969) | Cod sursa (job #288424)
Cod sursa(job #288424)
#include<stdio.h>
#define N 100004
int n, m, a[N][20];
void citire(), rezolva();
int main(){
freopen("rmq.in","r",stdin);
freopen("rmq.out","w",stdout);
citire();
rezolva();
return 0;
}
void citire(){
int i;
scanf("%d %d", &n, &m);
for (i = 1; i <= n; i++) scanf("%d", &a[i][0]);
}
void rezolva(){
int j, q, i, x, y, lg;
for (j = 1, q = 2; q <= n; j++, q <<= 1 )
for (i = 1; i <= n - q + 1; i++){
a[i][j] = a[i][j-1];
if (a[i][j] > a[i + (q >> 1)][j-1])
a[i][j] = a[i + (q >> 1)][j-1];
}
for (; m; m--){
scanf("%d %d", &x, &y);
for (lg = y - x + 1, lg = 0, q = 2; q <= lg; lg++, q <<= 1);
printf("%d\n", (a[x][lg] < a[y - q + 1][1] ? a[x][lg] : a[y - q + 1][1]));
}
}