Pagini recente » Cod sursa (job #2282341) | Cod sursa (job #2978592) | Cod sursa (job #2063034) | Cod sursa (job #2492804) | Cod sursa (job #2631255)
#include <stdio.h>
#define N 100000
#define log(x) 31-__builtin_clz(x)
#define min(a, b) a<b?a:b
int seg[log(N)+1][N];
int main (void) {
FILE *fin=fopen("rmq.in", "r"),
*fout=fopen("rmq.out", "w");
int n, m;
fscanf(fin, "%d%d", &n, &m);
int i, j;
for (i=0; i<n; ++i)
fscanf(fin, "%d", seg[0]+i);
for (i=1; (1<<i) < n; ++i)
for (j=0; j + (1<<i) <= n; ++j)
seg[i][j]=min(seg[i-1][j], seg[i-1][j + (1<<i-1)]);
int lg;
for (; m; --m) {
fscanf(fin, "%d%d", &i, &j);
--i, --j;
lg=log(j-i+1);
fprintf(fout, "%d\n", min(seg[lg][i], seg[lg][j-(1<<lg)+1]));
}
return 0;
}