Problem p02972 (C++)

Buggy submission (status: Runtime Error):
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int main(void) {
  ll N;
  cin >> N;

  vector<int> a(N + 1);
  for (int i = 1; i <= N; i++) {
    cin >> a[i];
  }

  vector<int> box(N);

  ll ans = 0;
  vector<ll> ans_arr;

  for (ll i = N / 2 + 1; i <= N; i++) {
    box[i] = a[i];

    if (box[i] == 1) {
      ans++;
      ans_arr.push_back(i);
    }
  }

  for (ll i = N / 2; i > 0; i--) {
    ll ball_num = 0;
    ll loop_count = N / i;

    for (ll j = 2; j <= loop_count; j++) {
      if (box[i * j] == 1) {
        ball_num++;
      }
    }

    if (ball_num % 2 == a[i]) {
      box[i] = 0;
    } else {
      box[i] = 1;

      ans++;
      ans_arr.push_back(i);
    }
  }

  sort(ans_arr.begin(), ans_arr.end());

  cout << ans << endl;

  ll arr_size = ans_arr.size();
  for (ll i = 0; i < arr_size; i++) {
    if (i != arr_size - 1) {
      cout << ans_arr[i] << " ";
    } else {
      cout << ans_arr[i] << endl;
    }
  }

  // for(int bit = 0; bit < (1 << N); bit++)
  // {
  //     ll ans = 0;
  //     vector<ll> ans_arr;

  //     bool isAns = true;

  //     for(int i = 1; i <= N; i++)
  //     {
  //         ll loop_count = N / i;
  //         ll ball_count = 0;

  //         for (int j = 1; j <= loop_count; j++)
  //         {
  //             if (bit & (1 << i * j - 1))
  //             {
  //                 ball_count++;

  //                 if(i == 1)
  //                 {
  //                     ans++;
  //                     ans_arr.push_back(j);
  //                 }
  //             }
  //         }

  //         if(ball_count % 2 != a[i - 1])
  //         {
  //             isAns = false;
  //             break;
  //         }
  //     }

  //     if (isAns)
  //     {
  //         cout << ans << endl;
  //         for (int i = 0; i < ans_arr.size(); i++)
  //         {
  //             if (i != ans_arr.size() - 1)
  //             {
  //                 cout << ans_arr[i] << " ";
  //             }
  //             else
  //             {
  //                 cout << ans_arr[i] << endl;
  //             }
  //         }

  //         return 0;
  //     }
  // }
}

Fixed submission:
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int main(void) {
  ll N;
  cin >> N;

  vector<int> a(N + 1);
  for (int i = 1; i <= N; i++) {
    cin >> a[i];
  }

  vector<int> box(N + 1);

  ll ans = 0;
  vector<ll> ans_arr;

  for (ll i = N / 2 + 1; i <= N; i++) {
    box[i] = a[i];

    if (box[i] == 1) {
      ans++;
      ans_arr.push_back(i);
    }
  }

  for (ll i = N / 2; i > 0; i--) {
    ll ball_num = 0;
    ll loop_count = N / i;

    for (ll j = 2; j <= loop_count; j++) {
      if (box[i * j] == 1) {
        ball_num++;
      }
    }

    if (ball_num % 2 == a[i]) {
      box[i] = 0;
    } else {
      box[i] = 1;

      ans++;
      ans_arr.push_back(i);
    }
  }

  sort(ans_arr.begin(), ans_arr.end());

  cout << ans << endl;

  ll arr_size = ans_arr.size();
  for (ll i = 0; i < arr_size; i++) {
    if (i != arr_size - 1) {
      cout << ans_arr[i] << " ";
    } else {
      cout << ans_arr[i] << endl;
    }
  }

  // for(int bit = 0; bit < (1 << N); bit++)
  // {
  //     ll ans = 0;
  //     vector<ll> ans_arr;

  //     bool isAns = true;

  //     for(int i = 1; i <= N; i++)
  //     {
  //         ll loop_count = N / i;
  //         ll ball_count = 0;

  //         for (int j = 1; j <= loop_count; j++)
  //         {
  //             if (bit & (1 << i * j - 1))
  //             {
  //                 ball_count++;

  //                 if(i == 1)
  //                 {
  //                     ans++;
  //                     ans_arr.push_back(j);
  //                 }
  //             }
  //         }

  //         if(ball_count % 2 != a[i - 1])
  //         {
  //             isAns = false;
  //             break;
  //         }
  //     }

  //     if (isAns)
  //     {
  //         cout << ans << endl;
  //         for (int i = 0; i < ans_arr.size(); i++)
  //         {
  //             if (i != ans_arr.size() - 1)
  //             {
  //                 cout << ans_arr[i] << " ";
  //             }
  //             else
  //             {
  //                 cout << ans_arr[i] << endl;
  //             }
  //         }

  //         return 0;
  //     }
  // }
}