// verification-helper: PROBLEM https://onlinejudge.u-aizu.ac.jp/courses/library/3/DSL/3/DSL_3_D
#include "src/datastructure/sparse_table.hpp"
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, l;
cin >> n >> l;
vector<int> a(n);
for (int &e : a) cin >> e;
SparseTable st(a, [](int a, int b) { return min(a, b); });
for (int i = 0; i <= n - l; ++i) {
if (i) cout << " ";
cout << st.query(i, i + l);
}
cout << endl;
return 0;
}
#line 1 "test/datastructure/sparse_table/aoj_dsl_3_d.test.cpp"
// verification-helper: PROBLEM https://onlinejudge.u-aizu.ac.jp/courses/library/3/DSL/3/DSL_3_D
#line 1 "src/datastructure/sparse_table.hpp"
#include <vector>
#include <algorithm>
template<class T, class F>
class SparseTable {
private:
std::vector<std::vector<T>> table;
std::vector<int> log_table;
F f;
public:
SparseTable(std::vector<T> const &v, F f) : f(f) {
int n = v.size();
int h = 1;
while ((1 << h) <= n) ++h;
table.assign(h, std::vector<T>(n));
log_table.assign(n + 1, 0);
for (int i = 2; i <= n; ++i) log_table[i] = log_table[i >> 1] + 1;
for (int i = 0; i < n; ++i) table[0][i] = v[i];
for (int i = 1, k = 1; i < h; ++i, k <<= 1)
for (int j = 0; j < n; ++j)
table[i][j] = f(table[i - 1][j], table[i - 1][std::min(j + k, n - 1)]);
}
T query(int l, int r) { // [l, r)
int k = log_table[r - l];
return f(table[k][l], table[k][r - (1 << k)]);
}
};
#line 4 "test/datastructure/sparse_table/aoj_dsl_3_d.test.cpp"
#line 6 "test/datastructure/sparse_table/aoj_dsl_3_d.test.cpp"
#include <iostream>
#line 8 "test/datastructure/sparse_table/aoj_dsl_3_d.test.cpp"
using namespace std;
int main() {
int n, l;
cin >> n >> l;
vector<int> a(n);
for (int &e : a) cin >> e;
SparseTable st(a, [](int a, int b) { return min(a, b); });
for (int i = 0; i <= n - l; ++i) {
if (i) cout << " ";
cout << st.query(i, i + l);
}
cout << endl;
return 0;
}
Env | Name | Status | Elapsed | Memory |
---|---|---|---|---|
g++ | 00_sample_00.in |
![]() |
18 ms | 16 MB |
g++ | 01_small_00.in |
![]() |
12 ms | 16 MB |
g++ | 01_small_01.in |
![]() |
11 ms | 16 MB |
g++ | 01_small_02.in |
![]() |
11 ms | 16 MB |
g++ | 02_corner_00.in |
![]() |
12 ms | 16 MB |
g++ | 02_corner_01.in |
![]() |
12 ms | 16 MB |
g++ | 02_corner_02.in |
![]() |
11 ms | 16 MB |
g++ | 02_corner_03.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_00.in |
![]() |
12 ms | 16 MB |
g++ | 03_rand_01.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_02.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_03.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_04.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_05.in |
![]() |
11 ms | 16 MB |
g++ | 03_rand_06.in |
![]() |
12 ms | 16 MB |
g++ | 03_rand_07.in |
![]() |
12 ms | 16 MB |
g++ | 04_large_00.in |
![]() |
12 ms | 16 MB |
g++ | 04_large_01.in |
![]() |
12 ms | 17 MB |
g++ | 04_large_02.in |
![]() |
13 ms | 17 MB |
g++ | 04_large_03.in |
![]() |
14 ms | 17 MB |
g++ | 04_large_04.in |
![]() |
14 ms | 17 MB |
g++ | 04_large_05.in |
![]() |
14 ms | 17 MB |
g++ | 04_large_06.in |
![]() |
61 ms | 25 MB |
g++ | 04_large_07.in |
![]() |
174 ms | 46 MB |
g++ | 05_maximum_00.in |
![]() |
594 ms | 118 MB |
g++ | 05_maximum_01.in |
![]() |
663 ms | 118 MB |
g++ | 05_maximum_02.in |
![]() |
671 ms | 118 MB |
g++ | 05_maximum_03.in |
![]() |
690 ms | 118 MB |
g++ | 05_maximum_04.in |
![]() |
732 ms | 118 MB |
g++ | 05_maximum_05.in |
![]() |
716 ms | 118 MB |
g++ | 05_maximum_06.in |
![]() |
709 ms | 118 MB |
g++ | 05_maximum_07.in |
![]() |
700 ms | 118 MB |
g++ | 06_all_00.in |
![]() |
636 ms | 118 MB |
g++ | 06_all_01.in |
![]() |
642 ms | 118 MB |
g++ | 06_all_02.in |
![]() |
642 ms | 118 MB |
g++ | 06_all_03.in |
![]() |
647 ms | 118 MB |
g++ | 06_sorted_00.in |
![]() |
647 ms | 118 MB |
g++ | 06_sorted_01.in |
![]() |
637 ms | 118 MB |
g++ | 07_extreme_00.in |
![]() |
530 ms | 118 MB |
g++ | 07_extreme_01.in |
![]() |
514 ms | 118 MB |
g++ | 07_extreme_02.in |
![]() |
534 ms | 118 MB |
g++ | 07_extreme_03.in |
![]() |
712 ms | 118 MB |
clang++ | 00_sample_00.in |
![]() |
11 ms | 14 MB |
clang++ | 01_small_00.in |
![]() |
11 ms | 14 MB |
clang++ | 01_small_01.in |
![]() |
11 ms | 14 MB |
clang++ | 01_small_02.in |
![]() |
11 ms | 12 MB |
clang++ | 02_corner_00.in |
![]() |
11 ms | 16 MB |
clang++ | 02_corner_01.in |
![]() |
11 ms | 14 MB |
clang++ | 02_corner_02.in |
![]() |
11 ms | 16 MB |
clang++ | 02_corner_03.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_00.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_01.in |
![]() |
11 ms | 16 MB |
clang++ | 03_rand_02.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_03.in |
![]() |
11 ms | 16 MB |
clang++ | 03_rand_04.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_05.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_06.in |
![]() |
11 ms | 14 MB |
clang++ | 03_rand_07.in |
![]() |
11 ms | 14 MB |
clang++ | 04_large_00.in |
![]() |
11 ms | 14 MB |
clang++ | 04_large_01.in |
![]() |
11 ms | 14 MB |
clang++ | 04_large_02.in |
![]() |
13 ms | 14 MB |
clang++ | 04_large_03.in |
![]() |
13 ms | 16 MB |
clang++ | 04_large_04.in |
![]() |
13 ms | 12 MB |
clang++ | 04_large_05.in |
![]() |
14 ms | 14 MB |
clang++ | 04_large_06.in |
![]() |
50 ms | 21 MB |
clang++ | 04_large_07.in |
![]() |
141 ms | 45 MB |
clang++ | 05_maximum_00.in |
![]() |
467 ms | 117 MB |
clang++ | 05_maximum_01.in |
![]() |
525 ms | 113 MB |
clang++ | 05_maximum_02.in |
![]() |
562 ms | 117 MB |
clang++ | 05_maximum_03.in |
![]() |
566 ms | 117 MB |
clang++ | 05_maximum_04.in |
![]() |
606 ms | 115 MB |
clang++ | 05_maximum_05.in |
![]() |
585 ms | 113 MB |
clang++ | 05_maximum_06.in |
![]() |
598 ms | 115 MB |
clang++ | 05_maximum_07.in |
![]() |
589 ms | 113 MB |
clang++ | 06_all_00.in |
![]() |
522 ms | 113 MB |
clang++ | 06_all_01.in |
![]() |
519 ms | 113 MB |
clang++ | 06_all_02.in |
![]() |
505 ms | 117 MB |
clang++ | 06_all_03.in |
![]() |
511 ms | 115 MB |
clang++ | 06_sorted_00.in |
![]() |
518 ms | 117 MB |
clang++ | 06_sorted_01.in |
![]() |
513 ms | 115 MB |
clang++ | 07_extreme_00.in |
![]() |
400 ms | 113 MB |
clang++ | 07_extreme_01.in |
![]() |
395 ms | 115 MB |
clang++ | 07_extreme_02.in |
![]() |
409 ms | 113 MB |
clang++ | 07_extreme_03.in |
![]() |
593 ms | 115 MB |