Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int Minim (int x, int y) {
- int k = lg[y - x + 1];
- int dif = (y - x + 1) - (1 << k);
- return min (M[k][x], M[k][x + dif]);
- }
- fin >> n;
- for (int i = 1; i <= n; i ++) {
- fin >> v[i];
- M[0][i] = v[i];
- }
- lg[1] = 0;
- for (int i = 2; i <= n; i ++)
- lg[i] = lg[i / 2] + 1;
- for (int j = 1; (1 << j) <= n; j ++)
- for (int i = 1; i + (1 << j) - 1 <= n; i ++)
- if (M[j - 1][i] < M[j - 1][i + (1 << (j - 1))])
- M[j][i] = M[j - 1][i];
- else
- M[j][i] = M[j - 1][i + (1 << (j - 1))];
Advertisement
Add Comment
Please, Sign In to add comment