fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. #define ll long long
  6. typedef vector<int> vi;
  7. typedef vector<string> vs;
  8. typedef pair<int, int> pi;
  9. #define F first
  10. #define S second
  11. #define pb push_back
  12. #define sz(a) a.size()
  13. #define Print(a) for(auto x : a) {cout << x << " ";} cout << endl;
  14. #define all(x) (x).begin(), (x).end()
  15. #define rall(x) (x).rbegin(), (x).rend()
  16. #define allr(x) (x).rbegin(), (x).rend()
  17. #define endl "\n"
  18. #define YES cout << "YES\n";
  19. #define NO cout << "NO\n";
  20.  
  21. int n, m;
  22. vi a;
  23.  
  24. int check(int mid) {
  25. int sm = 0;
  26. int M = 0;
  27. for(int i = 0; i < n; i++) {
  28. int j = i;
  29. while(j<n&&(a[j]-a[i])<=mid) {
  30. j++;
  31. }
  32. M++;
  33. if (M>m) {
  34. return -1;
  35. }
  36. j--;
  37. sm += (a[j]-a[i]);
  38. i = j;
  39. }
  40.  
  41. return sm;
  42. }
  43.  
  44. void solve() {
  45. cin >> n >> m;
  46. a = vi(n);
  47. for(int i = 0; i < n; i++) {
  48. cin >> a[i];
  49. }
  50. sort(all(a));
  51.  
  52. int l = 0;
  53. int r = 1e18;
  54. int res = 1e18;
  55. while(l <= r) {
  56. int mid = (l+r)/2;
  57. int g = check(mid);
  58. if (g != -1) {
  59. res = min(g, res);
  60. r = mid-1;
  61. } else {
  62. l = mid+1;
  63. }
  64. }
  65.  
  66. cout << res << endl;
  67. }
  68.  
  69. int32_t main() {
  70. ios_base::sync_with_stdio(false);
  71. cin.tie(0);
  72.  
  73. //freopen("wtf.in", "r", stdin);
  74. int t = 1;
  75. //cin >> t;
  76. while(t--) {
  77. solve();
  78. }
  79. }
  80.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
0