orazma

e.cpp

Apr 23rd, 2026
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.90 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. /*
  4. #include <ext/pb_ds/assoc.container.hpp>
  5. using namespace __gnu_pbds;
  6. template<typename key, typename cmp = less<key>>
  7. using pbds = tree<key, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
  8. */
  9. /*
  10. ████████████████████████████████████████
  11. ████████████▓▒▒▒░░░░░░░░▒▒▒▓████████████
  12. ███████░────────────────────────▒███████
  13. ████▒──────────────────────────────▒████
  14. ███▒─────────────────────────────────███
  15. ███──────────────────────────────────▓██
  16. ██░───────────────────────────────────██
  17. ██───░███████▒────────────▒███████░───██
  18. ██──▓█▓░████████░──────░████████░▓█▓──██
  19. █▓─░░─────░▓█████▒────▓█████▓░─────░──▓█
  20. █▒───────────▓██▓─────░▒██▓───────────▓█
  21. █░─────────────██──────██─────────────▒█
  22. █░───▒███████▒──██────░▓──▒███████▒───░█
  23. █░─▒███████████─██──────░███████████▒░░█
  24. █░─████▓▓▓▓▓▓▒░─██░──────▒▒░░░░░▒░░░░─▒█
  25. █░──────────────██░───────────────────░█
  26. ██─────────────░██░───────────────────░█
  27. ███────────────▓██────────────────────██
  28. ██▓█──────────▒███─────░▒───────────░███
  29. ██─████▒▒▓▒░░█████─────▒██──▒▓▒░░▒▒█▒███
  30. ███─█▓██────▒█▒─██───────▓░─░▒░▒████─███
  31. ███▒─█▒██───────█▓─────────────██─█─▒███
  32. ████░─█▓███▓░───██▒▒▒▓█░────░███─█▒─████
  33. █████──█▓▒█████████▓███████████░█▓─█████
  34. ██████──██──▒█████░──███████▒──█▓─██████
  35. ███████──██▓──────░░░░░░──────█▒─███████
  36. ████████──██▓░▒▒░░───────────█▒─████████
  37. █████████──█▒──░░▒████▒────░█░─█████████
  38. ██████████─░█─────███▒─────▒░─██████████
  39. ███████████░─────▒████───────███████████
  40. █████████████────█████─────░████████████
  41. ██████████████───▓████────▓█████████████
  42. ███████████████───███░──░███████████████
  43. █████████████████▒███▒▒█████████████████
  44. ████████████████████████████████████████
  45. ████████████████████████████████████████
  46. ██████──█──██────██─██─██───██────██████
  47. ███████───███─██─██─█─███─████─██─██████
  48. ████████─████────██──████───██────██████
  49. ███████───███─██─██─█─███─████─█████████
  50. ██████──█──██─██─██─██─██───██─█████████
  51. ████████████████████████████████████████
  52.  */
  53. #pragma GCC optimize("O3")
  54. using ll = long long;
  55. using ld = long double;
  56. using sint = short int;
  57. #define all(a) a.begin(), a.end()
  58. #define rall(a) a.rbegin(), a.rend()
  59. #define pii pair<int, int>
  60. #define pll pair<ll, ll>
  61. #define fill(a, b) memset(a, b, sizeof a)
  62.  
  63.  
  64. constexpr int inf = 0x3f3f3f3f;
  65. constexpr ll INF = 2e16;
  66. constexpr ll MINDICK = 2e14;
  67. const ld RANDMAX = (1LL << 32) - 1;
  68. const ll mod = 1'000'000'007;
  69. const ld EPS = 1e-9;
  70. mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
  71.  
  72. #ifdef LOCAL
  73. #include "algo/debug.h"
  74. #else
  75. #define debug(x) 42
  76. #endif
  77.  
  78.  
  79.  
  80.  
  81.  
  82. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  83.  
  84.  
  85. ll prog(ll a, ll b) {
  86.    return (b + a) * (b - a + 1) / 2;
  87. }
  88.  
  89. void solve() {
  90.    int n, k; cin >> n >> k;
  91.    vector<int> a(n);
  92.    for (int &i : a)cin >> i;
  93.    a.push_back(1);
  94.    vector<int> nxt(n + 1);
  95.    nxt.back() = n;
  96.    for (int i = n - 1; i >= 0; --i) {
  97.        if (a[i] == 1) {
  98.            nxt[i] = i;
  99.        } else {
  100.            nxt[i] = nxt[i + 1];
  101.        }
  102.    }
  103.    vector<vector<int>> dp(n + 1, vector<int> (71));
  104.    for (int i = 0; i <= 70; ++i) {
  105.        dp[n][i] = n;
  106.    }
  107.    debug(nxt);
  108.    for (int i = n - 1; i >= 0; --i) {
  109.        int nx = nxt[i];
  110.        ll len = nx - i;
  111.        ll del = prog(1, len);
  112.        for (int j = 0; j <= 70; ++j) {
  113.            ll val = j;
  114.            if (a[i] == 1) {
  115.                val += k;
  116.                if (val >= 70) {
  117.                    dp[i][j] = i;
  118.                } else {
  119.                    dp[i][j] = dp[i + 1][val];
  120.                }
  121.            } else {
  122.                val = max(0LL, val - del);
  123.                dp[i][j] = dp[nx][val];
  124.            }
  125.        }
  126.    }
  127.    for (int i = 0; i < n; ++i) {
  128.        cout << ((dp[i][0] == n) ? -1 : dp[i][0] + 1) << ' ';
  129.    }
  130. }
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  139.  
  140.  
  141.  
  142.  
  143. signed main() {
  144. #ifdef LOCAL
  145.    (void)!freopen("input.txt", "r", stdin);
  146. #else
  147.    std::ios::sync_with_stdio(false);
  148.    std::cin.tie(nullptr); std::cout.tie(nullptr);
  149. #endif
  150.    int tt = 1;
  151.    //cin >> tt;
  152. /*  Бисмил ляяхи ррахмаани ррахиим.
  153.    Изаа джаа’э насрул лаахи валь фатх.
  154.    Ва ра’этэ нааса ядхулююнэ фии дии нил ляяхи афвааджа.
  155.    Фа саббих би хамди раббикя вастагфирхь.
  156.    Иннаху кяяна тавваабэ
  157.  
  158.    Бисмил ляяхи ррахмаани ррахиим.
  159.    Куль а‘уузу би раббин наас.
  160.    Мааликин наас.
  161.    Иляяхин наас.
  162.    Мин шарриль васваасиль ханнаас.
  163.    Аллязии ювасвису фии судуурин наас. Миналь джиннати ван наас
  164.  
  165.    Бисмил ляяхи ррахмаани ррахиим.
  166.    Куль яяайюхэль кяяфируун.
  167.    Ляя а‘буду маа та‘будуун.
  168.    Ва ляя энтум ‘аабиду унэ маа а‘буд.
  169.    Ва ляя ана ‘аабидум маа ‘абадтум. Ва ляя энтум ‘аабидуунэ маа а‘буд.
  170.    Лякум диинукум ва лияд диин
  171. */
  172.    while (tt--) {
  173.        solve();
  174.        if (tt) {
  175.            cout << '\n';
  176.        }
  177.    }
  178.    //cerr << "\nRuntime = " << ((ld)clock() / CLOCKS_PER_SEC) << " ms\n";
  179. }
  180.  
  181.  
Advertisement
Add Comment
Please, Sign In to add comment