응애

#include <unordered_map>
#include <string>
#include <vector>
using namespace std;

typedef long long ll;

unordered_map<ll, ll> P;

ll get_parent(ll cur) {
    if (P[cur] == cur) { return cur; }
    return P[cur] = get_parent(P[cur]);
}

vector<ll> solution(ll k, vector room_number) {
    vector<ll> answer;
    for (const auto number : room_number) {
        if (P.find(number) == P.end()) { P[number] = number; }
        ll book_num = get_parent(number);
        answer.push_back(book_num);
        if (P.find(book_num + 1) == P.end()) { P[book_num + 1] = book_num + 1; }
        P[book_num] = get_parent(book_num + 1);
    }
    return answer;
}