Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize("Ofast")
- #pragma GCC target("avx,avx2,fma")
- #include <iostream>
- #include <vector>
- #include <cmath>
- int64_t solve(const int n, const int k, const std::vector<int>& arr) {
- std::vector<int> rev(n);
- for (int i = 0; i < n; ++i) {
- rev[i] = arr[n-i-1];
- }
- int sum = 0;
- const int len = k / 2;
- std::vector<int> answ(n / 8);
- int64_t res = 0;
- for (int i = 0; i + k - 1 < n; ++i) {
- const int j = n - (i + k - 1) - 1;
- int begin = 0;
- const int size = len / 8;
- for (int id = 0; id < 8; ++id) {
- for (int t = 0; t < size; ++t) {
- answ[t] += std::abs(arr[i + id * size + t] - rev[j + id * size + t]);
- }
- begin += size;
- }
- for (int t = begin; t < len; ++t) {
- res += std::abs(arr[i+t] - rev[j+t]);
- //std::cout << "abs(" << i + t << " - " << j + t << ") = " << std::abs(arr[i+t] - rev[j+t]) << std::endl;
- }
- for (int i = 0; i < (int)answ.size(); ++i) {
- res += answ[i];
- answ[i] = 0;
- }
- //std::cout << res << std::endl;
- }
- return res;
- }
- int main() {
- int n, k;
- std::cin >> n >> k;
- std::vector<int> arr(n);
- for (auto &it : arr) { std::cin >> it; }
- std::cout << solve(n, k, arr) << std::endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment