int n, k; cin >> n >> k; vector<int> a(n + 1); for (int i = 1; i <= n; i++) { cin >> a[i]; }
sort(a.begin() + 1, a.end()); int len = n - k; i64 ans = 1ll << 60; for (int l = 1, r = n - k; r <= n; r++, l++) { i64 res = a[r] - a[l]; ans = min(ans, res); }
int n; cin >> n; string s, t; cin >> s >> t; map<string, int> mp; string st = s + "00"; mp[st] = 0; queue<string> q; q.push(st); while (!q.empty()) { auto u = q.front(); q.pop(); int x = 0; for (int i = 0; i < n + 2; i++) { if (u[i] == '0') { x = i; break; } } for (int i = 0; i < n + 1; i++) { if (i == x || i == x + 1 || i == x - 1) continue; string v = u; v[x] = u[i], v[x + 1] = u[i + 1]; v[i] = '0', v[i + 1] = '0'; if (!mp.contains(v)) { mp[v] = mp[u] + 1; q.push(v); } } }
string ed = t + "00"; cout << (mp.contains(ed) ? mp[ed] : -1) << "\n";
int n; cin >> n; vector<vector<pair<int, int>>> adj(n + 1); i64 sum = 0; for (int i = 1; i < n; i++) { int u, v, w; cin >> u >> v >> w; adj[u].push_back({v, w}); adj[v].push_back({u, w}); sum += 2ll * w; }
vector<i64> d(n + 1); int id = 1; i64 mx = 0; auto dfs = [&](auto dfs, int u, int fa) -> void { for (auto [v, w] : adj[u]) { if (v == fa) continue; d[v] = d[u] + w; if (d[v] > mx) { mx = d[v], id = v; } dfs(dfs, v, u); } }; dfs(dfs, 1, 0); mx = 0; d[id] = 0; dfs(dfs, id, 0);
i64 ans = 1, cnt = 0; set<i64> vis; i64 hi = sqrtl(n); for (int i = 2; i <= m; i++) { i64 a = 1ll * i * i; while (a <= n) { if (!vis.contains(a)) { vis.insert(a); ans++; if (a > m && a <= hi) cnt++; } if (a > n / i) { break; } a *= i; } }
ans += max(0ll, hi - m - cnt); cout << ans << "\n";