Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- /*
- #include <ext/pb_ds/assoc.container.hpp>
- using namespace __gnu_pbds;
- template<typename key, typename cmp = less<key>>
- using pbds = tree<key, null_type, cmp, rb_tree_tag, tree_order_statistics_node_update>;
- */
- /*
- ████████████████████████████████████████
- ████████████▓▒▒▒░░░░░░░░▒▒▒▓████████████
- ███████░────────────────────────▒███████
- ████▒──────────────────────────────▒████
- ███▒─────────────────────────────────███
- ███──────────────────────────────────▓██
- ██░───────────────────────────────────██
- ██───░███████▒────────────▒███████░───██
- ██──▓█▓░████████░──────░████████░▓█▓──██
- █▓─░░─────░▓█████▒────▓█████▓░─────░──▓█
- █▒───────────▓██▓─────░▒██▓───────────▓█
- █░─────────────██──────██─────────────▒█
- █░───▒███████▒──██────░▓──▒███████▒───░█
- █░─▒███████████─██──────░███████████▒░░█
- █░─████▓▓▓▓▓▓▒░─██░──────▒▒░░░░░▒░░░░─▒█
- █░──────────────██░───────────────────░█
- ██─────────────░██░───────────────────░█
- ███────────────▓██────────────────────██
- ██▓█──────────▒███─────░▒───────────░███
- ██─████▒▒▓▒░░█████─────▒██──▒▓▒░░▒▒█▒███
- ███─█▓██────▒█▒─██───────▓░─░▒░▒████─███
- ███▒─█▒██───────█▓─────────────██─█─▒███
- ████░─█▓███▓░───██▒▒▒▓█░────░███─█▒─████
- █████──█▓▒█████████▓███████████░█▓─█████
- ██████──██──▒█████░──███████▒──█▓─██████
- ███████──██▓──────░░░░░░──────█▒─███████
- ████████──██▓░▒▒░░───────────█▒─████████
- █████████──█▒──░░▒████▒────░█░─█████████
- ██████████─░█─────███▒─────▒░─██████████
- ███████████░─────▒████───────███████████
- █████████████────█████─────░████████████
- ██████████████───▓████────▓█████████████
- ███████████████───███░──░███████████████
- █████████████████▒███▒▒█████████████████
- ████████████████████████████████████████
- ████████████████████████████████████████
- ██████──█──██────██─██─██───██────██████
- ███████───███─██─██─█─███─████─██─██████
- ████████─████────██──████───██────██████
- ███████───███─██─██─█─███─████─█████████
- ██████──█──██─██─██─██─██───██─█████████
- ████████████████████████████████████████
- */
- #pragma GCC optimize("O3")
- using ll = long long;
- using ld = long double;
- using sint = short int;
- #define all(a) a.begin(), a.end()
- #define rall(a) a.rbegin(), a.rend()
- #define pii pair<int, int>
- #define pll pair<ll, ll>
- #define fill(a, b) memset(a, b, sizeof a)
- constexpr int inf = 0x3f3f3f3f;
- constexpr ll INF = 2e16;
- constexpr ll MINDICK = 2e14;
- const ld RANDMAX = (1LL << 32) - 1;
- const ll mod = 1'000'000'007;
- const ld EPS = 1e-9;
- mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
- #ifdef LOCAL
- #include "algo/debug.h"
- #else
- #define debug(x) 42
- #endif
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- ll prog(ll a, ll b) {
- return (b + a) * (b - a + 1) / 2;
- }
- void solve() {
- int n, k; cin >> n >> k;
- vector<int> a(n);
- for (int &i : a)cin >> i;
- a.push_back(1);
- vector<int> nxt(n + 1);
- nxt.back() = n;
- for (int i = n - 1; i >= 0; --i) {
- if (a[i] == 1) {
- nxt[i] = i;
- } else {
- nxt[i] = nxt[i + 1];
- }
- }
- vector<vector<int>> dp(n + 1, vector<int> (71));
- for (int i = 0; i <= 70; ++i) {
- dp[n][i] = n;
- }
- debug(nxt);
- for (int i = n - 1; i >= 0; --i) {
- int nx = nxt[i];
- ll len = nx - i;
- ll del = prog(1, len);
- for (int j = 0; j <= 70; ++j) {
- ll val = j;
- if (a[i] == 1) {
- val += k;
- if (val >= 70) {
- dp[i][j] = i;
- } else {
- dp[i][j] = dp[i + 1][val];
- }
- } else {
- val = max(0LL, val - del);
- dp[i][j] = dp[nx][val];
- }
- }
- }
- for (int i = 0; i < n; ++i) {
- cout << ((dp[i][0] == n) ? -1 : dp[i][0] + 1) << ' ';
- }
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- signed main() {
- #ifdef LOCAL
- (void)!freopen("input.txt", "r", stdin);
- #else
- std::ios::sync_with_stdio(false);
- std::cin.tie(nullptr); std::cout.tie(nullptr);
- #endif
- int tt = 1;
- //cin >> tt;
- /* Бисмил ляяхи ррахмаани ррахиим.
- Изаа джаа’э насрул лаахи валь фатх.
- Ва ра’этэ нааса ядхулююнэ фии дии нил ляяхи афвааджа.
- Фа саббих би хамди раббикя вастагфирхь.
- Иннаху кяяна тавваабэ
- Бисмил ляяхи ррахмаани ррахиим.
- Куль а‘уузу би раббин наас.
- Мааликин наас.
- Иляяхин наас.
- Мин шарриль васваасиль ханнаас.
- Аллязии ювасвису фии судуурин наас. Миналь джиннати ван наас
- Бисмил ляяхи ррахмаани ррахиим.
- Куль яяайюхэль кяяфируун.
- Ляя а‘буду маа та‘будуун.
- Ва ляя энтум ‘аабиду унэ маа а‘буд.
- Ва ляя ана ‘аабидум маа ‘абадтум. Ва ляя энтум ‘аабидуунэ маа а‘буд.
- Лякум диинукум ва лияд диин
- */
- while (tt--) {
- solve();
- if (tt) {
- cout << '\n';
- }
- }
- //cerr << "\nRuntime = " << ((ld)clock() / CLOCKS_PER_SEC) << " ms\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment