SHOW:
|
|
- or go back to the newest paste.
| 1 | #include <cstdio> | |
| 2 | #include <iostream> | |
| 3 | #include <algorithm> | |
| 4 | ||
| 5 | #define N int(3e4) | |
| 6 | ||
| 7 | using namespace std; | |
| 8 | ||
| 9 | int act[N], len, sz, res[N]; | |
| 10 | ||
| 11 | int answer(int l, int r) {
| |
| 12 | int ret = -1, i; | |
| 13 | for (i = l; i % sz && i <= r; i++) | |
| 14 | ret = max(ret, act[i]); | |
| 15 | for (; i + sz <= r + 1; i += sz) | |
| 16 | ret = max(ret, res[i / sz]); | |
| 17 | for (; i <= r; i++) | |
| 18 | ret = max(ret, act[i]); | |
| 19 | return ret; | |
| 20 | } | |
| 21 | ||
| 22 | int main() {
| |
| 23 | int i, m; | |
| 24 | cin >> m; | |
| 25 | for (i = 0; ; i++) {
| |
| 26 | cin >> act[i]; | |
| 27 | if (act[i] == -1) | |
| 28 | break; | |
| 29 | } | |
| 30 | len = i; | |
| 31 | ||
| 32 | for (sz = 1; sz * sz < len; sz++); | |
| 33 | ||
| 34 | for (int j = i + 1; j < sz * sz; j++) | |
| 35 | act[j] = -1; | |
| 36 | ||
| 37 | for (int i = 0; i < sz * sz; i++) | |
| 38 | res[i / sz] = max(res[i / sz], act[i]); | |
| 39 | ||
| 40 | for (int i = 0; i + m <= len; i++) | |
| 41 | cout << answer(i, i + m - 1) << endl; | |
| 42 | ||
| 43 | return 0; | |
| 44 | } |