10814 - 나이순 정렬

solution

code

#include <iostream>
#include <queue>
#include <utility>
using namespace std;

struct info
{
    int age;
    string name;
    int idx;

    info(int age, string name, int idx) : age(age), name(name), idx(idx) {}
};
struct cmp
{
    bool operator()(info a, info b)
    {
        if(a.age == b.age) return a.idx > b.idx;
        return a.age > b.age;
    }
};

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    cin >> N;
    priority_queue<info, vector<info>, cmp> pq;
    int age;
    string name;
    int idx = 0;

    for(int i = 0; i < N; i++)
    {
        cin >> age;
        cin >> name;
        pq.push(info(age, name, idx++));
    }
    for(int i = 0; i < N; i++)
    {
        cout << pq.top().age << " " << pq.top().name << "\n";
        pq.pop();
    }

    return 0;
}

ref

10814번: 나이순 정렬