hiho week 16 register

Ended

Participants:1371

Verdict:Accepted
Score:100 / 100
Submitted:2014-10-18 23:33:02

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX