cyberjab

Untitled

Sep 9th, 2025
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.83 KB | None | 0 0
  1. #pragma GCC optimize("03")
  2. //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  3. #include <iostream>
  4. #include <iomanip>
  5. #include <cstdlib>
  6. #include <cstdio>
  7. #include <string>
  8. #include <vector>
  9. #include <map>
  10. #include <set>
  11. #include <unordered_map>
  12. #include <unordered_set>
  13. #include <queue>
  14. #include <deque>
  15. #include <cmath>
  16. #include <numeric>
  17. #include <algorithm>
  18. #include <ctime>
  19. #include <chrono>
  20. #include <random>
  21. #include <functional>
  22. #include <stack>
  23. //#include <windows.h>
  24. //void* operator new(size_t size) {
  25. // if (void* ptr = HeapAlloc(GetProcessHeap(), 0, size ? size : 1)) return ptr;
  26. // throw std::bad_alloc{};
  27. //}
  28. //void operator delete(void* ptr) {
  29. // HeapFree(GetProcessHeap(), 0, ptr);
  30. //}
  31.  
  32. using namespace std;
  33. using ll = long long;
  34. using db = double;
  35. using ldb = long double;
  36. using pii = pair<int, int>;
  37. using pll = pair<ll, ll>;
  38. using vint = vector<int>;
  39. using vll = vector<ll>;
  40. using vst = vector<string>;
  41. #define all(x) x.begin(), x.end()
  42. #define size(x) int(x.size())
  43. #define rep(x) for(int rep_i = 0; rep_i < x; ++rep_i)
  44. #define forp(i, s, f) for(int i = s; i < f; ++i)
  45. #define form(i, s, f) for(int i = s; i > f; --i)
  46. #define PB push_back
  47. #define MP make_pair
  48. #define F first
  49. #define S second
  50. #define elif else if
  51. #define dprint(x) for (auto now: x) cout << now << " "
  52.  
  53. const int MOD = 1e9 + 7;
  54. const int MOD2 = 998244353;
  55. const int INF = 2e9 + 7;
  56. const ll LINF = 1e18 + 7;
  57. const double EPS = 1e-9;
  58. const long double PI = acosl(-1.0);
  59.  
  60. void solve() {
  61. ll n, k;
  62. cin >> n >> k;
  63. vll sp;
  64. rep(n) {
  65. ll x;
  66. cin >> x;
  67. sp.push_back(x);
  68. }
  69. vll dp(n), dp2(n);
  70. ll sm = 0;
  71. multiset <ll> mst;
  72. ll tdl = 0;
  73. forp(i, 0, k) {
  74. sm += sp[i];
  75. mst.insert(sp[i]);
  76. }
  77. dp[k - 1] = sm * *(mst.begin());
  78. dp2[k - 1] = k;
  79. ll i = k;
  80. while (i < n) {
  81. ll td = sp[tdl];
  82. sm -= td;
  83. sm += sp[i];
  84. mst.erase(mst.find(td));
  85. mst.insert(sp[i]);
  86. ll msm = *(mst.begin()) * (sm);
  87. if (dp[i - 1] >= dp[i - k] + msm) {
  88. dp[i] = dp[i - 1];
  89. dp2[i] = dp2[i - 1];
  90. }
  91. else {
  92. dp[i] = dp[i - k] + msm;
  93. dp2[i] = i + 1;
  94. }
  95. tdl++;
  96. i++;
  97. }
  98. ll p = n - 1;
  99. vll ans;
  100. while (p > -1 and dp2[p] > 0) {
  101. if (p == 0) {
  102. ans.push_back(dp2[0]);
  103. break;
  104. }
  105. ans.push_back(dp2[p] - k + 1);
  106. p = dp2[p] - k - 1;
  107. }
  108. cout << size(ans) << "\n";
  109. reverse(all(ans));
  110. dprint(ans);
  111. }
  112.  
  113.  
  114. int main() {
  115. ios_base::sync_with_stdio(0);
  116. cin.tie(0);
  117. /*cout << setprecision(x)*/
  118. cout << fixed;
  119. int t;
  120. t = 1;
  121. while (t > 0) {
  122. solve();
  123. t--;
  124. }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment