Problem p02574 (C++) — buggy submission, verdict: Runtime Error

#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
using namespace std;

const int N = 1e6 + 5;
int prime[N];

void seive() {

  for (int i = 2; i < N; i++) {
    for (int j = 2 * i; j < N; j += i) {
      if (prime[j] == j) {
        prime[j] = i;
      }
    }
  }
}

map<int, int> mp;

void fx(int x) {
  set<int> s;
  while (x > 1) {
    if (s.find(prime[x]) == s.end()) {
      s.insert(prime[x]);
      mp[prime[x]]++;
    }
    x = x / prime[x];
  }
}

signed main() {

  for (int i = 1; i < N; i++)
    prime[i] = i;
  seive();

  int n;
  cin >> n;
  vector<int> ar(n);

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

  int gcd = ar[0];
  bool f1 = false, f2 = false;
  for (int i = 1; i < n; i++) {
    gcd = __gcd(gcd, ar[i]);
  }

  if (gcd == 1) {
    f1 = true;
  }

  for (int i = 0; i < n; i++) {
    fx(ar[i]);
  }

  for (auto it = mp.begin(); it != mp.end(); it++) {
    if (it->second > 1) {
      f2 = true;
      break;
    }
  }

  if (!f1 and f2) {
    cout << "not coprime\\n";
  } else if (!f2) {
    cout << "pairwise coprime\\n";
  } else {
    cout << "setwise coprime\\n";
  }

  return 0;
}

// string codes[] = {".;","abc","def","ghi","jkl","mno","pqrs","tu","vwx","yz"};

// vector<string> fx(string s){

//  if(s == ""){

//     vector<string> y;
//     y.push_back("");
//     return y;
//  }

//     //678
//  char ch = s[0];
//  //78
//  string rem = s.substr(1);

//     vector<string> temp = fx(rem);

//     vector<string> myans ;

//     for(int j=0;j<codes[ch-'0'].length();j++){
//       for(int i=0;i<temp.size();i++){
//               myans.push_back(codes[ch-'0'][j] + temp[i]);
//           }
//     }

//     return myans;

// }

// vector<string> path(int n){

//     if(n == 0){
//      vector<string> v;
//      v.push_back("");
//      return v;
//     }else if(n < 0){
//      vector<string>v;
//      return v;
//     }

//  vector<string>ans1 = path(n-1);
//  vector<string>ans2 = path(n-2);
//  vector<string>ans3 = path(n-3);

//  vector<string> fans;

//  for(int i=0;i<ans1.size();i++){
//    ans1[i] = '1' + ans1[i];
//    fans.push_back(ans1[i]);
//  }

//  for(int i=0;i<ans2.size();i++){
//    ans2[i] = '2' + ans2[i];
//    fans.push_back(ans2[i]);
//  }

//  for(int i=0;i<ans3.size();i++){
//    ans3[i] = '3' + ans3[i];
//    fans.push_back(ans3[i]);
//  }

//  return fans;
// }

// vector<string> getPath(int sr,int sc,int dr,int dc){

//     if(sr == dr and sc == dc){
//      vector<string> v;
//      v.push_back("");
//      return v;
//     }else if(sr > dr or sc > dc ){
//      vector<string> v;
//      return v;
//     }

//  vector<string> ch1 = getPath(sr,sc+1,dr,dc);
//  vector<string> ch2 = getPath(sr+1,sc,dr,dc);

//     vector<string> ans;

//  for(int i=0;i<ch1.size();i++){
//    ch1[i] = 'H' + ch1[i];
//    ans.push_back(ch1[i]);
//  }

//  for(int i=0;i<ch2.size();i++){
//    ch2[i] = 'V' + ch2[i];
//    ans.push_back(ch2[i]);
//  }

//  return ans;
// }

// //ABC
// vector<string> getSub(string s){

//    if(s == ""){
//        vector<string> v;
//        v.push_back("");
//        return v;
//    }

//    //A
//  char x = s[0];
//    //BC
//  string rem = s.substr(1);

//     // 4 strings
//  vector<string> temp = getSub(rem);

//     vector<string>res;

//     for(int i=0;i<temp.size();i++){

//       res.push_back(x+temp[i]);
//       res.push_back("_"+temp[i]);
//     }

//     return res;
// }

// void permute(string x,string y){

//    if(x == ""){
//       cout<<y<<" ";
//       return ;
//    }

//  for(int i=0;i<x.length();i++){

//    char choose = x[i];

//    string rem = x.substr(0,i) + x.substr(i+1);

//    permute(rem,y+choose);
//  }
// }

// int chess[5][5];
// const int n=5;

// void printChess(){
//  for(int i=0;i<n;i++){
//    for(int j=0;j<n;j++){
//      cout<<chess[i][j]<<" ";
//    }
//    cout<<endl;
//  }

//  cout<<endl;
// }

// void knightstour(int r,int c,int chess[][n],int moves){

//     if(r<0 or c <0 or r>=n or c>=n or chess[r][c] != 0 ){
//      return;
//     }else if(moves == n*n){

//         chess[r][c] = moves;
//         printChess();
//         chess[r][c] = 0;

//         return;
//     }

//     chess[r][c] = moves;

//  knightstour(r-2,c+1,chess,moves+1);
//  knightstour(r-1,c+2,chess,moves+1);
//  knightstour(r+1,c+2,chess,moves+1);
//  knightstour(r+2,c+1,chess,moves+1);
//  knightstour(r-2,c-1,chess,moves+1);
//  knightstour(r-1,c-2,chess,moves+1);
//  knightstour(r+1,c-2,chess,moves+1);
//  knightstour(r+2,c-1,chess,moves+1);

//  chess[r][c] = 0;
// }


Error: -6
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc


Fixed submission:

#include <bits/stdc++.h>
#define int long long
#define F first
#define S second
using namespace std;

const int N = 1e5 + 1;
int prime[N];

void seive() {

  for (int i = 2; i < N; i++) {
    for (int j = 2 * i; j < N; j += i) {
      if (prime[j] == j) {
        prime[j] = i;
      }
    }
  }
}

map<int, int> mp;

void fx(int x) {
  set<int> s;
  while (x > 1) {
    if (s.find(prime[x]) == s.end()) {
      s.insert(prime[x]);
      mp[prime[x]]++;
    }
    x = x / prime[x];
  }
}

signed main() {

#ifndef ONLINE_JUDGE
  freopen("input.txt", "r", stdin);
#endif

  for (int i = 1; i < N; i++)
    prime[i] = i;
  seive();

  int n;
  cin >> n;
  vector<int> ar(n);

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

  int gcd = ar[0];
  bool f1 = false, f2 = false;
  for (int i = 1; i < n; i++) {
    gcd = __gcd(gcd, ar[i]);
  }

  if (gcd == 1) {
    f1 = true;
  }

  for (int i = 0; i < n; i++) {
    fx(ar[i]);
  }

  for (auto it = mp.begin(); it != mp.end(); it++) {
    if (it->second > 1) {
      f2 = true;
      break;
    }
  }

  if (!f1 and f2) {
    cout << "not coprime\\n";
  } else if (!f2) {
    cout << "pairwise coprime\\n";
  } else {
    cout << "setwise coprime\\n";
  }

  return 0;
}

// string codes[] = {".;","abc","def","ghi","jkl","mno","pqrs","tu","vwx","yz"};

// vector<string> fx(string s){

//  if(s == ""){

//     vector<string> y;
//     y.push_back("");
//     return y;
//  }

//     //678
//  char ch = s[0];
//  //78
//  string rem = s.substr(1);

//     vector<string> temp = fx(rem);

//     vector<string> myans ;

//     for(int j=0;j<codes[ch-'0'].length();j++){
//       for(int i=0;i<temp.size();i++){
//               myans.push_back(codes[ch-'0'][j] + temp[i]);
//           }
//     }

//     return myans;

// }

// vector<string> path(int n){

//     if(n == 0){
//      vector<string> v;
//      v.push_back("");
//      return v;
//     }else if(n < 0){
//      vector<string>v;
//      return v;
//     }

//  vector<string>ans1 = path(n-1);
//  vector<string>ans2 = path(n-2);
//  vector<string>ans3 = path(n-3);

//  vector<string> fans;

//  for(int i=0;i<ans1.size();i++){
//    ans1[i] = '1' + ans1[i];
//    fans.push_back(ans1[i]);
//  }

//  for(int i=0;i<ans2.size();i++){
//    ans2[i] = '2' + ans2[i];
//    fans.push_back(ans2[i]);
//  }

//  for(int i=0;i<ans3.size();i++){
//    ans3[i] = '3' + ans3[i];
//    fans.push_back(ans3[i]);
//  }

//  return fans;
// }

// vector<string> getPath(int sr,int sc,int dr,int dc){

//     if(sr == dr and sc == dc){
//      vector<string> v;
//      v.push_back("");
//      return v;
//     }else if(sr > dr or sc > dc ){
//      vector<string> v;
//      return v;
//     }

//  vector<string> ch1 = getPath(sr,sc+1,dr,dc);
//  vector<string> ch2 = getPath(sr+1,sc,dr,dc);

//     vector<string> ans;

//  for(int i=0;i<ch1.size();i++){
//    ch1[i] = 'H' + ch1[i];
//    ans.push_back(ch1[i]);
//  }

//  for(int i=0;i<ch2.size();i++){
//    ch2[i] = 'V' + ch2[i];
//    ans.push_back(ch2[i]);
//  }

//  return ans;
// }

// //ABC
// vector<string> getSub(string s){

//    if(s == ""){
//        vector<string> v;
//        v.push_back("");
//        return v;
//    }

//    //A
//  char x = s[0];
//    //BC
//  string rem = s.substr(1);

//     // 4 strings
//  vector<string> temp = getSub(rem);

//     vector<string>res;

//     for(int i=0;i<temp.size();i++){

//       res.push_back(x+temp[i]);
//       res.push_back("_"+temp[i]);
//     }

//     return res;
// }

// void permute(string x,string y){

//    if(x == ""){
//       cout<<y<<" ";
//       return ;
//    }

//  for(int i=0;i<x.length();i++){

//    char choose = x[i];

//    string rem = x.substr(0,i) + x.substr(i+1);

//    permute(rem,y+choose);
//  }
// }

// int chess[5][5];
// const int n=5;

// void printChess(){
//  for(int i=0;i<n;i++){
//    for(int j=0;j<n;j++){
//      cout<<chess[i][j]<<" ";
//    }
//    cout<<endl;
//  }

//  cout<<endl;
// }

// void knightstour(int r,int c,int chess[][n],int moves){

//     if(r<0 or c <0 or r>=n or c>=n or chess[r][c] != 0 ){
//      return;
//     }else if(moves == n*n){

//         chess[r][c] = moves;
//         printChess();
//         chess[r][c] = 0;

//         return;
//     }

//     chess[r][c] = moves;

//  knightstour(r-2,c+1,chess,moves+1);
//  knightstour(r-1,c+2,chess,moves+1);
//  knightstour(r+1,c+2,chess,moves+1);
//  knightstour(r+2,c+1,chess,moves+1);
//  knightstour(r-2,c-1,chess,moves+1);
//  knightstour(r-1,c-2,chess,moves+1);
//  knightstour(r+1,c-2,chess,moves+1);
//  knightstour(r+2,c-1,chess,moves+1);

//  chess[r][c] = 0;
// }