Problem p02647 (C++) — buggy submission, verdict: Time Limit Exceeded

// while (clock()<=69*CLOCKS_PER_SEC)
// #pragma comment(linker, "/stack:200000000")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
// #pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

#define pb push_back
#define SZ(x) ((int)(x).size())
#define ALL(x) x.begin(), x.end()
#define all(x) x.begin(), x.end()
#define fi first
#define se second
#define _upgrade                                                               \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define erase_duplicates(x)                                                    \\
  sort(all(x));                                                                \\
  (x).resize(distance((x).begin(), unique(all(x))));

using namespace std;
using namespace __gnu_pbds;
template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// X.find_by_order(k); - zwraca iterator na k-ty element (numeracja od zerowego)
// X.order_of_key(k); - zwraca liczbę elementów ostro mniejszych niż k

typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef vector<PII> VPII;
typedef vector<PLL> VPLL;
typedef vector<LL> VLL;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<char> VC;
typedef long double LD;
typedef pair<LD, LD> PLD;
typedef vector<LD> VLD;
typedef vector<PLD> VPLD;

template <class TH> void _dbg(const char *sdbg, TH h) {
  cerr << sdbg << " = " << h << endl;
}
template <class TH, class... TA> void _dbg(const char *sdbg, TH h, TA... a) {
  while (*sdbg != ',')
    cerr << *sdbg++;
  cerr << " = " << h << ", ";
  _dbg(sdbg + 1, a...);
}

#ifdef LOCAL
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
#else
#define dbg(...)
#define cerr                                                                   \\
  if (0)                                                                       \\
  cout
#endif

const int maxn = (1e6) + 7;
const int maxk = 20;
const int inf = (1e9) + 7;
const LL LLinf = ((LL)1e18) + 7LL;
const LD eps = 1e-9;
const LL mod = 1e9 + 7;

// ***************************** CODE ***************************** //

LL tab[maxn];

VI rob(VI V) {
  for (int i = 0; i < SZ(V); i++)
    tab[i] = 0;
  for (int i = 0; i < SZ(V); i++) {
    tab[max(0, i - V[i])]++;
    tab[i + V[i] + 1]--;
  }
  for (int i = 0; i < SZ(V); i++) {
    if (i > 0)
      tab[i] += tab[i - 1];
    V[i] = tab[i];
  }
  return V;
}

int main() {
  _upgrade int n, k;
  cin >> n >> k;
  VI V;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    V.pb(a);
  }
  while (k--) {
    bool ok = 0;
    for (auto s : V)
      if (s < SZ(V))
        ok = 1;
    if (ok)
      V = rob(V);
    else
      break;
  }
  for (auto s : V)
    cout << s << " ";

  return 0;
}


Error: TLE

Fixed submission:

// while (clock()<=69*CLOCKS_PER_SEC)
// #pragma comment(linker, "/stack:200000000")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("Ofast")
// #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
// #pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

#define pb push_back
#define SZ(x) ((int)(x).size())
#define ALL(x) x.begin(), x.end()
#define all(x) x.begin(), x.end()
#define fi first
#define se second
#define _upgrade                                                               \\
  ios_base::sync_with_stdio(0);                                                \\
  cin.tie(0);                                                                  \\
  cout.tie(0);
#define erase_duplicates(x)                                                    \\
  sort(all(x));                                                                \\
  (x).resize(distance((x).begin(), unique(all(x))));

using namespace std;
using namespace __gnu_pbds;
template <typename T>
using ordered_set =
    tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;

// X.find_by_order(k); - zwraca iterator na k-ty element (numeracja od zerowego)
// X.order_of_key(k); - zwraca liczbę elementów ostro mniejszych niż k

typedef long long LL;
typedef pair<int, int> PII;
typedef pair<LL, LL> PLL;
typedef vector<PII> VPII;
typedef vector<PLL> VPLL;
typedef vector<LL> VLL;
typedef vector<int> VI;
typedef vector<string> VS;
typedef vector<char> VC;
typedef long double LD;
typedef pair<LD, LD> PLD;
typedef vector<LD> VLD;
typedef vector<PLD> VPLD;

template <class TH> void _dbg(const char *sdbg, TH h) {
  cerr << sdbg << " = " << h << endl;
}
template <class TH, class... TA> void _dbg(const char *sdbg, TH h, TA... a) {
  while (*sdbg != ',')
    cerr << *sdbg++;
  cerr << " = " << h << ", ";
  _dbg(sdbg + 1, a...);
}

#ifdef LOCAL
#define dbg(...) _dbg(#__VA_ARGS__, __VA_ARGS__)
#else
#define dbg(...)
#define cerr                                                                   \\
  if (0)                                                                       \\
  cout
#endif

const int maxn = (1e6) + 7;
const int maxk = 20;
const int inf = (1e9) + 7;
const LL LLinf = ((LL)1e18) + 7LL;
const LD eps = 1e-9;
const LL mod = 1e9 + 7;

// ***************************** CODE ***************************** //

LL tab[maxn];

VI rob(VI V) {
  for (int i = 0; i < SZ(V); i++)
    tab[i] = 0;
  for (int i = 0; i < SZ(V); i++) {
    tab[max(0, i - V[i])]++;
    tab[i + V[i] + 1]--;
  }
  for (int i = 0; i < SZ(V); i++) {
    if (i > 0)
      tab[i] += tab[i - 1];
    V[i] = tab[i];
  }
  return V;
}

int main() {
  _upgrade int n, k;
  cin >> n >> k;
  VI V;
  for (int i = 0; i < n; i++) {
    int a;
    cin >> a;
    V.pb(a);
  }
  while (k--) {
    bool ok = 0;
    for (auto s : V)
      if (s < SZ(V))
        ok = 1;
    if (ok)
      V = rob(V);
  }
  for (auto s : V)
    cout << s << " ";

  return 0;
}