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

#pragma GCC optimize("O3")
#pragma GCC target("sse4")

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;

typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;

#define FOR(i, a, b) for (int i = a; i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define FORd(i, a, b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--)
#define trav(a, x) for (auto &a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)

#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert
#define db cout << " HERE " << endl;
template <class T> bool ckmin(T &a, const T &b) { return b < a ? a = b, 1 : 0; }
template <class T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int MOD = 1000000007;
const char nl = '\\n';
const int MX = 2000001;
int vis[1000002];
int gcd(int a, int b) {
  if (a == 0)
    return b;
  return gcd(b % a, a);
}
int main() {
  int n;
  cin >> n;
  ll ar[n];
  F0R(i, n) {
    cin >> ar[i];
    vis[ar[i]] = true;
  }
  int flag = 0;
  ll gc = ar[0];
  F0R(i, n) {
    for (int j = 2; j * j <= ar[i]; j++) {
      if (ar[i] % j == 0) {
        int a = ar[i] / j;
        if (vis[a] == true) {
          flag = 1;
          break;
        }
        if (vis[j] == true) {
          flag = 1;
          break;
        }
        vis[a] = true;
        vis[j] = true;
      }
    }
  }
  if (flag == 0) {
    cout << "pairwise coprime" << endl;
    return 0;
  }
  F0R(i, n) { gc = gcd(ar[i], gc); }
  if (gc == 1) {
    cout << "setwise coprime" << endl;
  } else
    cout << "not coprime" << endl;
}
// template by benq


Error: TLE

Fixed submission:

#pragma GCC optimize("O3")
#pragma GCC target("sse4")

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef complex<ld> cd;

typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef pair<ld, ld> pd;

typedef vector<int> vi;
typedef vector<ld> vd;
typedef vector<ll> vl;
typedef vector<pi> vpi;
typedef vector<pl> vpl;
typedef vector<cd> vcd;

#define FOR(i, a, b) for (int i = a; i < (b); i++)
#define F0R(i, a) for (int i = 0; i < (a); i++)
#define FORd(i, a, b) for (int i = (b)-1; i >= a; i--)
#define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--)
#define trav(a, x) for (auto &a : x)
#define uid(a, b) uniform_int_distribution<int>(a, b)(rng)

#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define ins insert
#define db cout << " HERE " << endl;
template <class T> bool ckmin(T &a, const T &b) { return b < a ? a = b, 1 : 0; }
template <class T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

const int MOD = 1000000007;
const char nl = '\\n';
const int MX = 2000001;
int vis[1000002];
int main() {
  int n;
  cin >> n;
  ll ar[n];
  F0R(i, n) {
    cin >> ar[i];
    vis[ar[i]] = true;
  }
  int flag = 0;
  ll gc = ar[0];
  F0R(i, n) {
    for (int j = 2; j * j <= ar[i]; j++) {
      if (ar[i] % j == 0) {
        int a = ar[i] / j;
        if (vis[a] == true)
          flag = 1;
        if (vis[j] == true)
          flag = 1;
        vis[a] = true;
        vis[j] = true;
      }
    }
  }
  if (flag == 0) {
    cout << "pairwise coprime" << endl;
    return 0;
  }
  F0R(i, n) { gc = __gcd(ar[i], gc); }
  if (gc == 1) {
    cout << "setwise coprime" << endl;
  } else
    cout << "not coprime" << endl;
}
// template by benq