#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <immintrin.h>
#ifndef DEBUG
//#pragma GCC optimize("O3")
//#pragma GCC target("avx2")
#endif
using namespace __gnu_pbds;
using namespace __gnu_cxx;
using namespace std;
//
using ld = long double;
using ll = long long;
using i128 = __int128;
using ull = unsigned long long;
using pll = std::pair<ll, ll>;
using cmpl = std::complex<ld>;
template<typename T>
using oset = tree<T, null_type, std::less<T>, rb_tree_tag, tree_order_statistics_node_update>;
constexpr ll MOD1 = 998244353;
constexpr ll MOD = 1000000007;
constexpr ll INV2 = 499122177;
constexpr ld PI = 3.141592653589793;
const ld eps = 1e-7;
const ll K = 500;
const ll C = 200;
std::mt19937 rnd(std::chrono::steady_clock::now().time_since_epoch().count());
ld START_TIME = clock();
void solve() {
ll n, k;
std::cin >> n >> k;
std::vector<ll> a(n);
for (int i = 0; i < n; ++i) {
std::cin >> a[i];
}
ll sht = k;
std::map<ll, ll> lft, rgt;
lft[a[0]] = 1;
rgt[a[0]] = 1;
ll ans = 0;
for (ll i = 1; i < n; ++i) {
ll l = lft.rbegin()->first - sht;
ll r = rgt.begin()->first + sht;
if (l <= a[i] && a[i] <= r) {
++lft[a[i] + sht];
++rgt[a[i] - sht];
} else if (a[i] < l) {
lft[a[i] + sht] += 2;
--lft[l + sht];
if (lft[l + sht] == 0) {
lft.erase(l + sht);
}
ans += l - a[i];
++rgt[l - sht];
} else {
rgt[a[i] - sht] += 2;
--rgt[r - sht];
if (rgt[r - sht] == 0) {
rgt.erase(r - sht);
}
ans += a[i] - r;
++lft[r + sht];
}
sht += k;
}
std::cout << ans;
}
signed main() {
#ifdef DEBUG
std::freopen("/home/anton/CLionProjects/untitled/input.txt", "r", stdin);
#else
// std::freopen("tri.in", "r", stdin); std::freopen("tri.out", "w", stdout);
#endif
std::cin.tie(nullptr)->std::ios_base::sync_with_stdio(false);
int tt = 1;
// ll g; std::cin >> g;
// std::cin >> tt;
while (tt--) {
solve();
}
#ifdef DEBUG
std::cerr << '\n';
ld TIME = (clock() - START_TIME) / CLOCKS_PER_SEC;
std::cerr << "Time: " << TIME << '\n';
#endif
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |