Lang:G++
Edit12345678910111213141516171819202122232425#include <cstdio>#define MAXNUM 1000010#define MIN(x,y) ((x)<(y)?(x):(y))int main() {int pre[20][MAXNUM];int N, Q;int i, j, l, r, len;scanf("%d", &N);for(i = 0; i < N; i++)scanf("%d", &pre[0][i]);for(i = 1; (1 << i) <= N; i++)for(j = 0; j <= N - (1 << i); j++)pre[i][j] = MIN(pre[i-1][j], pre[i-1][j+(1 << (i-1))]);scanf("%d", &Q);while(Q--) {scanf("%d%d", &l, &r);len = r - l + 1;for(i = 0; len != 1; i++, len >>= 1);printf("%d\n", MIN(pre[i][l-1], pre[i][r-(1<<i)]));}return 0;}