Apkawa

Untitled

Oct 7th, 2021
995
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. const int N = 1e5 + 7;
  6.  
  7. string temp[N][2], array[N][2];
  8.  
  9. void merge(string arr[][2], int l, int m, int r, int n)
  10. {
  11.     int i = l;
  12.     int j = m + 1;
  13.     int k = l;
  14.     while (i <= m && j <= r) {
  15.         if (arr[i][0] <= arr[j][0]) { //сравниваем только названия стран,
  16.             temp[k][0] = arr[i][0];   //не меняя при этом порядок выступающих
  17.             temp[k][1] = arr[i][1];
  18.             i++;
  19.             k++;
  20.         }
  21.         else {
  22.             temp[k][0] = arr[j][0];
  23.             temp[k][1] = arr[j][1];
  24.             j++;
  25.             k++;
  26.         }
  27.     }
  28.     while (i <= m) {
  29.         temp[k][0] = arr[i][0];
  30.         temp[k][1] = arr[i][1];
  31.         i++;
  32.         k++;
  33.     }
  34.     while (j <= r) {
  35.         temp[k][0] = arr[j][0];
  36.         temp[k][1] = arr[j][1];
  37.         j++;
  38.         k++;
  39.     }
  40.     for (int p = l; p <= r; p++) {
  41.         arr[p][0] = temp[p][0];
  42.         arr[p][1] = temp[p][1];
  43.     }
  44. }
  45.  
  46. void mergeSort(string arr[][2], int l, int r, int n)
  47. {
  48.     if (l < r) {
  49.         int m = (l + r) / 2;
  50.         mergeSort(arr, l, m, n);
  51.         mergeSort(arr, m + 1, r, n);
  52.         merge(arr, l, m, r, n);
  53.     }
  54. }
  55.  
  56. int main()
  57. {
  58.  
  59.     ifstream in("race.in");
  60.     ofstream out("race.out");
  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