Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <algorithm>
- #include <iostream>
- #include <vector>
- #include <random>
- #include "log_duration.h"
- using namespace std;
- // функция возвращает true, если векторы из одинаковых элементов
- // перепишите эту функцию, улучшив её асимптотическую сложность
- bool TestPermut(vector<int>& v1, vector<int>& v2) {
- // если они разной длины, элементы заведомо разные
- if (v1.size() != v2.size()) {
- return false;
- }
- sort(v1.begin(), v1.end());
- sort(v2.begin(), v2.end());
- if (v2 != v1) {
- return false;
- }
- return true;
- }
- int main() {
- std::mt19937 g;
- 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 vectors match? "s << flush;
- cout << (TestPermut(v1, v2) ? "Yes"s : "No"s) << endl;
- // делаем один перестановкой другого явным образом
- v2 = v1;
- shuffle(v2.begin(), v2.end(), g);
- cout << "Permuted vectors match? "s << flush;
- cout << (TestPermut(v1, v2) ? "Yes"s : "No"s) << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement