Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- const int N = 1e5 + 7;
- string temp[N][2], array[N][2];
- void merge(string arr[][2], int l, int m, int r, int n)
- {
- int i = l;
- int j = m + 1;
- int k = l;
- while (i <= m && j <= r) {
- if (arr[i][0] <= arr[j][0]) { //сравниваем только названия стран,
- temp[k][0] = arr[i][0]; //не меняя при этом порядок выступающих
- temp[k][1] = arr[i][1];
- i++;
- k++;
- }
- else {
- temp[k][0] = arr[j][0];
- temp[k][1] = arr[j][1];
- j++;
- k++;
- }
- }
- while (i <= m) {
- temp[k][0] = arr[i][0];
- temp[k][1] = arr[i][1];
- i++;
- k++;
- }
- while (j <= r) {
- temp[k][0] = arr[j][0];
- temp[k][1] = arr[j][1];
- j++;
- k++;
- }
- for (int p = l; p <= r; p++) {
- arr[p][0] = temp[p][0];
- arr[p][1] = temp[p][1];
- }
- }
- void mergeSort(string arr[][2], int l, int r, int n)
- {
- if (l < r) {
- int m = (l + r) / 2;
- mergeSort(arr, l, m, n);
- mergeSort(arr, m + 1, r, n);
- merge(arr, l, m, r, n);
- }
- }
- int main()
- {
- ifstream in("race.in");
- ofstream out("race.out");
- ios_base::sync_with_stdio(0);
- in.tie(0);
- int n;
- in >> n;
- for (int i = 0; i < n; i++) {
- in >> array[i][0] >> array[i][1];
- }
- //out << 1 << endl;
- mergeSort(array, 0, (n - 1), n);
- string country = "";
- for (int i = 0; i < n; ++i) {
- if (array[i][0] == country) {
- out << array[i][1] << endl;
- } else {
- country = array[i][0]; //если страна текущего участника не совпадает с последней запомненной
- out << "=== " << country << " ===\n" << array[i][1] << endl; //страной, то запоминаем новую и выводим новый заголовок
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment