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


#include <algorithm>
#include <array>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <type_traits>
#include <type_traits>
#include <utility>
#include <vector>

using namespace std;

using ll = long long int;
using ull = long long unsigned;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const double PI = acos(-1.0);
#define YES(n) cout << ((n) ? "YES" : "NO") << endl;
#define Yes(n) cout << ((n) ? "Yes" : "No") << endl;
#define Else(a, b, c) a != b &&b != c &&c != a
#define all(v) v.begin(), v.end()
#define Ini(a)                                                                 \\
  ll a;                                                                        \\
  cin >> a;
#define Ind(a)                                                                 \\
  double a;                                                                    \\
  cin >> a;
#define Ins(a)                                                                 \\
  string a;                                                                    \\
  cin >> a;
#define Sort(v) sort(all(v));
#define Rsort(v, type) sort(all(v), greater<type>());
#define Unique(v) v.erase(unique(all(v)), v.end());

const long MOD = pow(10, 9) + 7;
const double pai = 3.14159265358979;

char ALFA[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
               'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char alfa[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
               'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

inline void finish() {
  cout << -1 << endl;
  exit(0);
}

inline vector<bool> GetPrimeTable(int n) {
  vector<bool> primeTable(n + 1, true);
  int sqr = sqrt(n);
  primeTable[0] = false; // 0は素数じゃない
  primeTable[1] = false; // 1は素数じゃない
  for (int i = 2; i <= sqr; ++i) {
    if (primeTable[i]) {
      for (size_t j = i + i; j < primeTable.size(); j += i) {
        primeTable[j] = false;
      }
    }
  }
  return primeTable;
}

inline vector<ll> GetPrimeNumbers(int n) {
  vector<bool> primeTable = GetPrimeTable(n);
  vector<ll> result;
  if (n < 2) {
    result;
  }
  result.reserve(n / 2);
  for (size_t i = 0; i < primeTable.size(); ++i) {
    if (primeTable[i]) {
      result.push_back(i);
    }
  }
  result.shrink_to_fit();
  return result;
}

inline map<ll, ll> PrimeFact(ull n) {
  ull num = 2;
  map<ll, ll> result;
  while (true) {
    if (n % num == 0) {
      if (result.count(num) == 0) {
        result.insert(pair<ll, ll>{num, 1});
      } else {
        result[num]++;
      }
      n /= num;
    } else {
      if (++num > sqrt(n)) {
        if (result.size() == 0 || n != 1) {
          result.insert(pair<ll, ll>{n, 1});
        }
        return result;
      }
    }
  }
}

unsigned GetDigit(double num) { return log10(num) + 1; }

ll modinv(ll a, ll m) {
  ll b = m, u = 1, v = 0;
  while (b) {
    ll t = a / b;
    a -= t * b;
    swap(a, b);
    u -= t * v;
    swap(u, v);
  }
  u %= m;
  if (u < 0)
    u += m;
  return u;
}

class Mod {
public:
  static inline ll Add(ll a, ll b) { return (a + b) % MOD; }

  static inline ll Sub(ll a, ll b) {
    ll ans = (a - b) % MOD;
    return (ans < 0) ? (ans + MOD) : ans;
  }

  static inline ll Mul(ll a, ll b) { return (a * b) % MOD; }

  static inline ll Div(ll a, ll b) { return (a % MOD) * modinv(b, MOD) % MOD; }
};

template <typename T> inline void debug(vector<T> v) {
  cout << "[";
  for (ll i = 0; i < v.size() - 1; ++i) {
    cout << v[i] << ", ";
  }
  cout << v[v.size() - 1] << "]" << endl;
}

void Main();
inline void DebugMain() {
  while (true) {
    Main();
  }
}

int main() {
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(15);

  bool debug = false;
  if (debug) {
    cout << "\\x1b[41m"
         << "Debug Mode " << endl;
  }
  (debug) ? DebugMain() : Main();
  return 0;
}

int parmitation(ll N) {
  ll ans = 1;
  for (ll i = 1; i <= N; i++) {
    ans *= i;
  }

  return ans;
}

int SemiCommonMultiple(ll A, ll ANum, ll B, ll BNum, ll diff, ll max) {
  ll calc;
  calc = diff + B * BNum - A * ANum;

  if (diff + B * BNum > max) {
    return 0;
  } else {
    if (calc < 0) {
      SemiCommonMultiple(A, ANum, B, ++BNum, diff, max);
    } else if (calc > 0) {
      SemiCommonMultiple(A, ++ANum, B, BNum, diff, max);
    } else {
      return A * (ANum + 0.5);
    }
  }
}

ll CaracalVsMonstor(ll H, ll sum, ll count) {
  if (H == 0) {
    return sum;
  }

  H = H / 2;
  sum = sum + count;

  count = count * 2;

  return CaracalVsMonstor(H, sum, count);
}

class ibis {
public:
  ll A;
  ll B;
  ld spec;

  bool operator<(const ibis &another) const { return spec < another.spec; };
};

ll gcd(ll a, ll b) {
  if ((a = a % b) == 0) {
    return b;
  }

  return gcd(b, a);
}

inline void Main() {
  ll X, Y, N, M, K, H, Q;
  vector<ll> A;
  ull ans = 0, temp = 0;
  ll sum = 0, count = 1;
  double avg = 0.0;
  string S;
  string T;
  ll loopIndex;
  ll lastNum = -1;
  bool flag = false;
  ll B, C;

  cin >> N;

  A.resize(N);

  for (int i = 0; i < N; i++) {
    cin >> A[i];
    temp ^= A[i];
  }

  for (int i = 0; i < N; i++) {
    ans = temp;
    ans ^= A[i];
    cout << ans << " ";
  }
}

Error: TLE

Fixed submission:


#include <algorithm>
#include <array>
#include <bitset>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <functional>
#include <iomanip>
#include <iostream>
#include <limits>
#include <map>
#include <numeric>
#include <queue>
#include <random>
#include <set>
#include <stack>
#include <string>
#include <type_traits>
#include <type_traits>
#include <utility>
#include <vector>

using namespace std;

using ll = long long int;
using ull = long long unsigned;
using ld = long double;
using pii = pair<int, int>;
using pll = pair<ll, ll>;
const double PI = acos(-1.0);
#define YES(n) cout << ((n) ? "YES" : "NO") << endl;
#define Yes(n) cout << ((n) ? "Yes" : "No") << endl;
#define Else(a, b, c) a != b &&b != c &&c != a
#define all(v) v.begin(), v.end()
#define Ini(a)                                                                 \\
  ll a;                                                                        \\
  cin >> a;
#define Ind(a)                                                                 \\
  double a;                                                                    \\
  cin >> a;
#define Ins(a)                                                                 \\
  string a;                                                                    \\
  cin >> a;
#define Sort(v) sort(all(v));
#define Rsort(v, type) sort(all(v), greater<type>());
#define Unique(v) v.erase(unique(all(v)), v.end());

const long MOD = pow(10, 9) + 7;
const double pai = 3.14159265358979;

char ALFA[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
               'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
char alfa[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
               'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};

inline void finish() {
  cout << -1 << endl;
  exit(0);
}

inline vector<bool> GetPrimeTable(int n) {
  vector<bool> primeTable(n + 1, true);
  int sqr = sqrt(n);
  primeTable[0] = false; // 0は素数じゃない
  primeTable[1] = false; // 1は素数じゃない
  for (int i = 2; i <= sqr; ++i) {
    if (primeTable[i]) {
      for (size_t j = i + i; j < primeTable.size(); j += i) {
        primeTable[j] = false;
      }
    }
  }
  return primeTable;
}

inline vector<ll> GetPrimeNumbers(int n) {
  vector<bool> primeTable = GetPrimeTable(n);
  vector<ll> result;
  if (n < 2) {
    result;
  }
  result.reserve(n / 2);
  for (size_t i = 0; i < primeTable.size(); ++i) {
    if (primeTable[i]) {
      result.push_back(i);
    }
  }
  result.shrink_to_fit();
  return result;
}

inline map<ll, ll> PrimeFact(ull n) {
  ull num = 2;
  map<ll, ll> result;
  while (true) {
    if (n % num == 0) {
      if (result.count(num) == 0) {
        result.insert(pair<ll, ll>{num, 1});
      } else {
        result[num]++;
      }
      n /= num;
    } else {
      if (++num > sqrt(n)) {
        if (result.size() == 0 || n != 1) {
          result.insert(pair<ll, ll>{n, 1});
        }
        return result;
      }
    }
  }
}

unsigned GetDigit(double num) { return log10(num) + 1; }

ll modinv(ll a, ll m) {
  ll b = m, u = 1, v = 0;
  while (b) {
    ll t = a / b;
    a -= t * b;
    swap(a, b);
    u -= t * v;
    swap(u, v);
  }
  u %= m;
  if (u < 0)
    u += m;
  return u;
}

class Mod {
public:
  static inline ll Add(ll a, ll b) { return (a + b) % MOD; }

  static inline ll Sub(ll a, ll b) {
    ll ans = (a - b) % MOD;
    return (ans < 0) ? (ans + MOD) : ans;
  }

  static inline ll Mul(ll a, ll b) { return (a * b) % MOD; }

  static inline ll Div(ll a, ll b) { return (a % MOD) * modinv(b, MOD) % MOD; }
};

template <typename T> inline void debug(vector<T> v) {
  cout << "[";
  for (ll i = 0; i < v.size() - 1; ++i) {
    cout << v[i] << ", ";
  }
  cout << v[v.size() - 1] << "]" << endl;
}

void Main();
inline void DebugMain() {
  while (true) {
    Main();
  }
}

int main() {
  cin.tie(nullptr);
  ios_base::sync_with_stdio(false);
  cout << fixed << setprecision(15);

  bool debug = false;
  if (debug) {
    cout << "\\x1b[41m"
         << "Debug Mode " << endl;
  }
  (debug) ? DebugMain() : Main();
  return 0;
}

int parmitation(ll N) {
  ll ans = 1;
  for (ll i = 1; i <= N; i++) {
    ans *= i;
  }

  return ans;
}

int SemiCommonMultiple(ll A, ll ANum, ll B, ll BNum, ll diff, ll max) {
  ll calc;
  calc = diff + B * BNum - A * ANum;

  if (diff + B * BNum > max) {
    return 0;
  } else {
    if (calc < 0) {
      SemiCommonMultiple(A, ANum, B, ++BNum, diff, max);
    } else if (calc > 0) {
      SemiCommonMultiple(A, ++ANum, B, BNum, diff, max);
    } else {
      return A * (ANum + 0.5);
    }
  }
}

ll CaracalVsMonstor(ll H, ll sum, ll count) {
  if (H == 0) {
    return sum;
  }

  H = H / 2;
  sum = sum + count;

  count = count * 2;

  return CaracalVsMonstor(H, sum, count);
}

class ibis {
public:
  ll A;
  ll B;
  ld spec;

  bool operator<(const ibis &another) const { return spec < another.spec; };
};

ll gcd(ll a, ll b) {
  if ((a = a % b) == 0) {
    return b;
  }

  return gcd(b, a);
}

inline void Main() {
  ll X, Y, N, M, K, H, Q;
  vector<ll> A;
  vector<ull> Ans;
  ull ans = 0, temp = 0;
  ll sum = 0, count = 1;
  double avg = 0.0;
  string S;
  string T;
  ll loopIndex;
  ll lastNum = -1;
  bool flag = false;
  ll B, C;

  cin >> N;

  A.resize(N);

  for (int i = 0; i < N; i++) {
    cin >> A[i];
  }

  for (int i = 0; i < N; i++) {
    for (int j = 0; j < N; j++) {
      if (i == j)
        continue;

      ans ^= A[j];
    }
    Ans.push_back(ans);
    ans = 0;
  }

  for (int i = 0; i < Ans.size(); i++) {
    cout << Ans[i] << " ";
  }
}