티스토리 뷰
https://www.acmicpc.net/problem/10814
해당 문제에서 일반 정렬(sort)를 사용하고 제출하면 통과되지 않습니다. 그 이유로는 나이가 같은 문자열들의 기존 순서를 보장해주지 않기 때문입니다.
이때, stable_sort를 사용해야 합니다. 문제와 같이 동일한 값(나이)가 존재할 때 기존 순서를 유지가 필요할 때 사용됩니다.
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>
using namespace std;
bool comp(pair<int, string> p1, pair<int, string> p2) {
return p1.first < p2.first;
}
int main() {
int n;
(cin >> n).ignore();
vector<pair<int, string> > vector;
for (int i = 0; i < n; i++) {
string line;
getline(cin, line);
stringstream ss(line);
int age;
string name;
ss >> age >> name;
vector.push_back(make_pair(age, name));
}
stable_sort(vector.begin(), vector.end(), comp);
for (int i = 0; i < n; i++) {
cout << vector[i].first << ' ' << vector[i].second << '\n';
}
}