This documentation is automatically generated by online-judge-tools/verification-helper
View the Project on GitHub ruthen71/rcpl
#define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DSL_3_D" #include <bits/stdc++.h> #include "dp/sliding_window_minimum.hpp" int main() { int N, L; std::cin >> N >> L; std::vector<int> a(N); for (int i = 0; i < N; i++) std::cin >> a[i]; auto b = sliding_window_minimum(a, L); for (int i = 0; i < N - L + 1; i++) std::cout << b[i] << " \n"[i == N - L]; return 0; }
#line 1 "verify/aoj_dsl/aoj_dsl_3_d.test.cpp" #define PROBLEM "https://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=DSL_3_D" #include <bits/stdc++.h> #line 2 "dp/sliding_window_minimum.hpp" template <class T> std::vector<T> sliding_window_minimum(const std::vector<T> &a, const int k) { int n = (int)a.size(); std::vector<T> res(n - k + 1); std::deque<T> deq; for (int i = 0; i < n; i++) { while (!deq.empty() and a[deq.back()] >= a[i]) deq.pop_back(); deq.push_back(i); if (i - k + 1 >= 0) { res[i - k + 1] = a[deq.front()]; if (deq.front() == i - k + 1) deq.pop_front(); } } return res; } #line 6 "verify/aoj_dsl/aoj_dsl_3_d.test.cpp" int main() { int N, L; std::cin >> N >> L; std::vector<int> a(N); for (int i = 0; i < N; i++) std::cin >> a[i]; auto b = sliding_window_minimum(a, L); for (int i = 0; i < N - L + 1; i++) std::cout << b[i] << " \n"[i == N - L]; return 0; }