Untitled
3 years ago in Plain Text
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
// функция возвращает true, если векторы из одинаковых элементов
bool TestPermut(const vector<int>& v1, const vector<int>& v2) {
auto v1_copy = v1;
auto v2_copy = v2;
std::sort(v1_copy.begin(), v1_copy.end());
std::sort(v2_copy.begin(), v2_copy.end());
return v1_copy == v2_copy;
}
int main() {
int n;
cin >> n;
vector<int> v1, v2;
v1.reserve(n);
v2.reserve(n);
for (int i = 0; i < n; ++i) {
v1.push_back(rand());
v2.push_back(rand());
}
// оба вектора случайны, вряд ли они совпадут
cout << "Random vector matches? "s << flush;
cout << (TestPermut(v1, v2) ? "Yes"s : "No"s) << endl;
// делаем один перестановкой другого явным образом
v2 = v1;
random_shuffle(v2.begin(), v2.end());
cout << "Permuted vector matches? "s << flush;
cout << (TestPermut(v1, v2) ? "Yes"s : "No"s) << endl;
}