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

#include <bits/stdc++.h>
#define FASTIO
using namespace std;

using ll = long long;
using Vi = std::vector<int>;
using Vl = std::vector<ll>;
using Pii = std::pair<int, int>;
using Pll = std::pair<ll, ll>;

constexpr int I_INF = std::numeric_limits<int>::max();
constexpr ll L_INF = std::numeric_limits<ll>::max();

template <typename T1, typename T2> inline bool chmin(T1 &a, const T2 &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T1, typename T2> inline bool chmax(T1 &a, const T2 &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}

class Prints {
private:
  class __Prints {
  public:
    __Prints(const char *sep, const char *term) : sep(sep), term(term) {}
    template <class... Args> void operator()(const Args &...args) const {
      print(args...);
    }
    template <typename T> void pvec(const T &vec, size_t sz) const {
      for (size_t i = 0; i < sz; i++)
        std::cout << vec[i] << (i == sz - 1 ? term : sep);
    }
    template <typename T> void pmat(const T &mat, size_t h, size_t w) {
      for (size_t i = 0; i < h; i++)
        for (size_t j = 0; j < w; j++)
          std::cout << mat[i][j] << (j == w - 1 ? term : sep);
    }

  private:
    const char *sep, *term;
    void print() const { std::cout << term; }
    void print_rest() const { std::cout << term; }
    template <class T, class... Tail>
    void print(const T &head, const Tail &...tail) const {
      std::cout << head, print_rest(tail...);
    }
    template <class T, class... Tail>
    void print_rest(const T &head, const Tail &...tail) const {
      std::cout << sep << head, print_rest(tail...);
    }
  };

public:
  Prints() {}
  __Prints operator()(const char *sep = " ", const char *term = "\\n") const {
    return __Prints(sep, term);
  }
};

Prints prints;

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

void solve() {
  int N;
  cin >> N;
  Vi A(N), B(N);
  Vi na(N + 1), nb(N + 1);
  for (ll i = 0; i < N; i++) {
    int a;
    cin >> a;
    A[i] = a;
    ++na[a];
  }
  for (ll i = 0; i < N; i++) {
    int a;
    cin >> a;
    B[i] = a;
    ++nb[a];
  }

  for (ll i = 1; i <= N; i++) {
    if (na[i] + nb[i] > N) {
      prints()("No");
      return;
    }
  }

  reverse(B.begin(), B.end());

  int dup = -1;
  for (ll i = 0; i < N; i++) {
    if (A[i] == B[i]) {
      dup = A[i];
      break;
    }
  }

  if (dup == -1) {
    prints()("Yes");
    prints().pvec(B, N);
    return;
  }

  Vi pos1, pos2;
  for (ll i = 0; i < N; i++) {
    if (A[i] != dup && B[i] != dup) {
      pos1.emplace_back(i);
    }
    if (A[i] == dup && B[i] == dup) {
      pos2.emplace_back(i);
    }
  }

  while (!pos2.empty()) {
    int x = pos2.back();
    pos2.pop_back();
    int y = pos1.back();
    pos1.pop_back();
    swap(B[x], B[y]);
  }

  prints()("Yes");
  prints().pvec(B, N);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

int main() {
#ifdef FASTIO
  std::cin.tie(nullptr), std::cout.tie(nullptr);
  std::ios::sync_with_stdio(false);
#endif
#ifdef FILEINPUT
  std::ifstream ifs("./in_out/input.txt");
  std::cin.rdbuf(ifs.rdbuf());
#endif
#ifdef FILEOUTPUT
  std::ofstream ofs("./in_out/output.txt");
  std::cout.rdbuf(ofs.rdbuf());
#endif
  std::cout << std::setprecision(18) << std::fixed;
  solve();
  std::cout << std::flush;
  return 0;
}

Error: WA

Fixed submission:

#include <bits/stdc++.h>
#define FASTIO
using namespace std;

using ll = long long;
using Vi = std::vector<int>;
using Vl = std::vector<ll>;
using Pii = std::pair<int, int>;
using Pll = std::pair<ll, ll>;

constexpr int I_INF = std::numeric_limits<int>::max();
constexpr ll L_INF = std::numeric_limits<ll>::max();

template <typename T1, typename T2> inline bool chmin(T1 &a, const T2 &b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <typename T1, typename T2> inline bool chmax(T1 &a, const T2 &b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}

class Prints {
private:
  class __Prints {
  public:
    __Prints(const char *sep, const char *term) : sep(sep), term(term) {}
    template <class... Args> void operator()(const Args &...args) const {
      print(args...);
    }
    template <typename T> void pvec(const T &vec, size_t sz) const {
      for (size_t i = 0; i < sz; i++)
        std::cout << vec[i] << (i == sz - 1 ? term : sep);
    }
    template <typename T> void pmat(const T &mat, size_t h, size_t w) {
      for (size_t i = 0; i < h; i++)
        for (size_t j = 0; j < w; j++)
          std::cout << mat[i][j] << (j == w - 1 ? term : sep);
    }

  private:
    const char *sep, *term;
    void print() const { std::cout << term; }
    void print_rest() const { std::cout << term; }
    template <class T, class... Tail>
    void print(const T &head, const Tail &...tail) const {
      std::cout << head, print_rest(tail...);
    }
    template <class T, class... Tail>
    void print_rest(const T &head, const Tail &...tail) const {
      std::cout << sep << head, print_rest(tail...);
    }
  };

public:
  Prints() {}
  __Prints operator()(const char *sep = " ", const char *term = "\\n") const {
    return __Prints(sep, term);
  }
};

Prints prints;

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

void solve() {
  int N;
  cin >> N;
  Vi A(N), B(N);
  Vi na(N + 1), nb(N + 1);
  for (ll i = 0; i < N; i++) {
    int a;
    cin >> a;
    A[i] = a;
    ++na[a];
  }
  for (ll i = 0; i < N; i++) {
    int a;
    cin >> a;
    B[i] = a;
    ++nb[a];
  }

  for (ll i = 1; i <= N; i++) {
    if (na[i] + nb[i] > N) {
      prints()("No");
      return;
    }
  }

  reverse(B.begin(), B.end());

  int dup;
  for (ll i = 0; i < N; i++) {
    if (A[i] == B[i]) {
      dup = A[i];
      break;
    }
  }

  Vi pos1, pos2;
  for (ll i = 0; i < N; i++) {
    if (A[i] != dup && B[i] != dup) {
      pos1.emplace_back(i);
    }
    if (B[i] == dup) {
      pos2.emplace_back(i);
    }
  }

  while (!pos2.empty()) {
    int x = pos2.back();
    pos2.pop_back();
    int y = pos1.back();
    pos1.pop_back();
    swap(B[x], B[y]);
  }

  prints().pvec(B, N);
}

//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

int main() {
#ifdef FASTIO
  std::cin.tie(nullptr), std::cout.tie(nullptr);
  std::ios::sync_with_stdio(false);
#endif
#ifdef FILEINPUT
  std::ifstream ifs("./in_out/input.txt");
  std::cin.rdbuf(ifs.rdbuf());
#endif
#ifdef FILEOUTPUT
  std::ofstream ofs("./in_out/output.txt");
  std::cout.rdbuf(ofs.rdbuf());
#endif
  std::cout << std::setprecision(18) << std::fixed;
  solve();
  std::cout << std::flush;
  return 0;
}