akela43

algo

Apr 10th, 2020
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1. //clang 3.8.0
  2. /*
  3. 1-ое условие:
  4. Удалить из первой последовательности все элементы, встречающиеся во второй.
  5. 2-ое условие:
  6. Во второй последовательности после каждого элемента, кратного X, вставить новый элемент.
  7. 3-е условие:
  8. Отсортировать данные последовательности.
  9. 4-ое условие:
  10. Объединить их в одну отсортированную последовательность.
  11. */
  12. #include <iostream>
  13. #include <vector>
  14. #include <algorithm>
  15. int main()
  16. {
  17.     std::vector<int> v1 {1,2,3,4,5,6,7,8,9,10,11,12, 13};
  18.     std::vector<int> v2 {1,2,3,5,55, 2,  7,8,11,2, 12};
  19.     // 1)
  20.     v1.erase(std::remove_if(v1.begin(), v1.end(), [&v2](int n){ return std::find(v2.begin(),v2.end(), n) == v2.end();} ), v1.end());
  21.    // for (auto &n :v1) std::cout << n << " ";
  22.     //2)
  23.     int x = 2;
  24.     auto it = v2.begin();
  25.     while (it != v2.end()) {
  26.         it = find(it, v2.end(), x);
  27.         if (it != v2.end()) {
  28.             it = v2.insert(it, x); // вставляем то же число
  29.             *(++it++) = 0; // после каждого x - ноль
  30.         }
  31.     }
  32.     std::cout << "\n"; for (auto &n :v2) std::cout << n << " ";
  33.     // 3)
  34.     std::sort(v1.begin(), v1.end());
  35.     std::sort(v2.begin(), v2.end());
  36.  
  37.     //4
  38.     std::vector<int> v3(v1.size() + v2.size());
  39.     auto it2 = std::copy(v1.begin(), v1.end(), v3.begin());
  40.     std::copy(v2.begin(), v2.end(), it2);
  41.     std::inplace_merge (v3.begin(),v3.begin()+v1.size(),v3.end());
  42.    
  43.     // вывод
  44.     std::cout << "\n";
  45.     for (auto &n :v3) std::cout << n << " ";
  46.    
  47.    
  48. }
Advertisement
Add Comment
Please, Sign In to add comment