Apkawa

Untitled

Oct 7th, 2021
952
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. ifstream in("input.txt");
  6. ofstream out("output.txt");
  7.  
  8. const int N = 1e5 + 7;
  9.  
  10. string temp[N][2], array[N][2];
  11.  
  12. void merge(string arr[][2], int l, int m, int r, int n)
  13. {
  14.     int i = l;
  15.     int j = m + 1;
  16.     int k = l;
  17.     while (i <= m && j <= r) {
  18.         if (arr[i][0] <= arr[j][0]) { //сравниваем только названия стран,
  19.             temp[k][0] = arr[i][0];   //не меняя при этом порядок выступающих
  20.             temp[k][1] = arr[i][1];
  21.             i++;
  22.             k++;
  23.         }
  24.         else {
  25.             temp[k][0] = arr[j][0];
  26.             temp[k][1] = arr[j][1];
  27.             j++;
  28.             k++;
  29.         }
  30.     }
  31.     while (i <= m) {
  32.         temp[k][0] = arr[i][0];
  33.         temp[k][1] = arr[i][1];
  34.         i++;
  35.         k++;
  36.     }
  37.     while (j <= r) {
  38.         temp[k][0] = arr[j][0];
  39.         temp[k][1] = arr[j][1];
  40.         j++;
  41.         k++;
  42.     }
  43.     for (int p = l; p <= r; p++) {
  44.         arr[p][0] = temp[p][0];
  45.         arr[p][1] = temp[p][1];
  46.     }
  47. }
  48.  
  49. void mergeSort(string arr[][2], int l, int r, int n)
  50. {
  51.     if (l < r) {
  52.         int m = (l + r) / 2;
  53.         mergeSort(arr, l, m, n);
  54.         mergeSort(arr, m + 1, r, n);
  55.         merge(arr, l, m, r, n);
  56.     }
  57. }
  58.  
  59. int main()
  60. {
  61.     ios_base::sync_with_stdio(0);
  62.     in.tie(0);
  63.     int n;
  64.     in >> n;
  65.     for (int i = 0; i < n; i++) {
  66.         in >> array[i][0] >> array[i][1];
  67.     }
  68.     //out << 1 << endl;
  69.     mergeSort(array, 0, (n - 1), n);
  70.     string country = "";
  71.     for (int i = 0; i < n; ++i) {
  72.         if (array[i][0] == country) {
  73.             out << array[i][1] << endl;
  74.         } else {
  75.             country = array[i][0]; //если страна текущего участника не совпадает с последней запомненной
  76.             out << "=== " << country << " ===\n" << array[i][1] << endl; //страной, то запоминаем новую и выводим новый заголовок
  77.         }
  78.     }
  79.     return 0;
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment