fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <sstream>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. // Hàm gộp hai dãy đã sắp xếp
  9. vector<int> merge2Arrays(const vector<int>& a, const vector<int>& b) {
  10. int m = a.size(), n = b.size();
  11. vector<int> res(m + n);
  12. int i = 0, p = 0, q = 0;
  13.  
  14. while (p < m && q < n) {
  15. if (a[p] <= b[q]) {
  16. res[i++] = a[p++];
  17. } else {
  18. res[i++] = b[q++];
  19. }
  20. }
  21.  
  22. while (p < m) {
  23. res[i++] = a[p++];
  24. }
  25.  
  26. while (q < n) {
  27. res[i++] = b[q++];
  28. }
  29.  
  30. return res;
  31. }
  32.  
  33. // Hàm gộp k dãy đã sắp xếp
  34. vector<int> mergeKArrays(vector<vector<int>>& arr, int k) {
  35. vector<int> result = arr[0]; // Bắt đầu từ dãy đầu tiên
  36.  
  37. for (int i = 1; i < k; ++i) {
  38. result = merge2Arrays(result, arr[i]);
  39. }
  40.  
  41. return result;
  42. }
  43.  
  44. int main() {
  45. int k;
  46. cin >> k;
  47. cin.ignore(); // Bỏ qua ký tự xuống dòng sau khi nhập k
  48.  
  49. vector<vector<int>> arr(k);
  50.  
  51. for (int i = 0; i < k; ++i) {
  52. string line;
  53. getline(cin, line); // Đọc cả dòng
  54. stringstream ss(line);
  55. int num;
  56. while (ss >> num) {
  57. arr[i].push_back(num);
  58. }
  59. }
  60.  
  61. vector<int> result = mergeKArrays(arr, k);
  62.  
  63. // In kết quả
  64. for (int x : result) {
  65. cout << x << " ";
  66. }
  67. cout << endl;
  68.  
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0s 5288KB
stdin
3
1 4 5
1 3 4
2 6
stdout
1 1 2 3 4 4 5 6