Сортируем оба массива и проверяем, совпали ли они. Если совпали, то это перестановка.
#include
int* sorted(int *A, int size) {
int *B = new int[size];
for (int i = 0; i < size; ++i) B[i] = A[i];
for (int i = 0; i < size - 1; ++i) {
for (int j = i + 1; j < size; ++j) {
if (B[i] > B[j]) {
int t = B[i];
B[i] = B[j];
B[j] = t;
}
}
}
return B;
}
bool arr_eq(int *A, int *B, int size) {
for (int i = 0; i < size; ++i) {
if (A[i] != B[i]) return false;
}
return true;
}
bool is_permutation(int* A, int* B, int size) {
int *sA = sorted(A, size), *sB = sorted(B, size);
bool is_perm = arr_eq(sA, sB, size);
delete [] sA;
delete [] sB;
return is_perm;
}
int* read_arr_int(int size) {
int *A = new int[size];
for (int i = 0; i < size; ++i) {
std::cin >> A[i];
}
return A;
}
int main() {
int n = 0;
std::cin >> n;
int *A = read_arr_int(n), *B = read_arr_int(n);
std::cout << (is_permutation(A, B, n) ? "YES" : "NO");<br> delete [] A;
delete [] B;
return 0;
}