Pagini recente » Cod sursa (job #1311437) | Cod sursa (job #2106115) | Cod sursa (job #1178541) | Cod sursa (job #432012) | Cod sursa (job #2600414)
#include <stdio.h>
#define N 100000
#define log(x) 31-__builtin_clz(x)
inline int min (const int x, const int y) {
return x<y?x:y;
}
int v[N], seg[log(N)+1][N];
int main (void) {
FILE *fin=fopen("rmq.in", "r"),
*fout=fopen("rmq.out", "w");
int n, q, i, j, x, y;
fscanf(fin, "%d%d", &n, &q);
for (i=0; i<n; i++) {
fscanf(fin, "%d", v+i);
seg[0][i]=v[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)]);
for (; q; q--) {
fscanf(fin, "%d%d", &x, &y);
--x, --y;
int lg=log(y-x+1);
fprintf(fout, "%d\n", min(seg[lg][x], seg[lg][y-(1<<lg)+1]));
}
fclose(fin);
fclose(fout);
return 0;
}