Problem p02660 (C++)

Buggy submission (status: Time Limit Exceeded):
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define p_ary(ary, a, b)                                                       \
  do {                                                                         \
    cout << "[";                                                               \
    for (int count = (a); count < (b); ++count)                                \
      cout << ary[count] << ((b)-1 == count ? "" : ", ");                      \
    cout << "]\n";                                                             \
  } while (0)
#define p_map(map, it)                                                         \
  do {                                                                         \
    cout << "{";                                                               \
    for (auto(it) = map.begin();; ++(it)) {                                    \
      if ((it) == map.end()) {                                                 \
        cout << "}\n";                                                         \
        break;                                                                 \
      } else                                                                   \
        cout << "" << (it)->first << "=>" << (it)->second << ", ";             \
    }                                                                          \
  } while (0)

template <typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}

const char newl = '\n';

int main() {
  ll n;
  cin >> n;
  int ans = 0;
  for (int i = 2; i * i <= n; ++i)
    if (n % i == 0) {
      int cnt = 0;
      while (n % i == 0) {
        n /= i;
        cnt++;
      }
      for (int j = 1; j < 10; ++j) {
        if (cnt < j)
          break;
        ans++;
        cnt -= j;
      }
    }
  if (n > 1)
    ans++;
  cout << ans << endl;
}

Fixed submission:
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> P;

#define p_ary(ary, a, b)                                                       \
  do {                                                                         \
    cout << "[";                                                               \
    for (int count = (a); count < (b); ++count)                                \
      cout << ary[count] << ((b)-1 == count ? "" : ", ");                      \
    cout << "]\n";                                                             \
  } while (0)
#define p_map(map, it)                                                         \
  do {                                                                         \
    cout << "{";                                                               \
    for (auto(it) = map.begin();; ++(it)) {                                    \
      if ((it) == map.end()) {                                                 \
        cout << "}\n";                                                         \
        break;                                                                 \
      } else                                                                   \
        cout << "" << (it)->first << "=>" << (it)->second << ", ";             \
    }                                                                          \
  } while (0)

template <typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &a) {
  os << "(" << a.first << ", " << a.second << ")";
  return os;
}

const char newl = '\n';

int main() {
  ll n;
  cin >> n;
  int ans = 0;
  for (ll i = 2; i * i <= n; ++i)
    if (n % i == 0) {
      int cnt = 0;
      while (n % i == 0) {
        n /= i;
        cnt++;
      }
      for (int j = 1; j < 10; ++j) {
        if (cnt < j)
          break;
        ans++;
        cnt -= j;
      }
    }
  if (n > 1)
    ans++;
  cout << ans << endl;
}