랭킹전 대기열 - 20006

2025. 2. 13. 09:57PS/백준

문제

https://www.acmicpc.net/problem/20006

느낀점

이전에 비슷한 문제를 풀었던 것 같다. 최대한 문제를 많이 풀어보자 ! map, pair에서 오류를 찾지 못해 한동안 헤맸다. map, pair등 stl에 익숙해지자!

풀이

#include <iostream>
#include <vector>
#include <map>
#include <string>
#include <algorithm>

#define pii pair<int, string>

using namespace std;

int main()
{
    int p, m;
    cin >> p >> m;
    map<int, vector<pii>> room;
    int startNumber = 0;
    for (int i = 0; i < p; i++)
    {
        int l;
        string n;
        bool newRoom = true;
        cin >> l >> n;
        if (room.empty())
        {
            room[startNumber].push_back(make_pair(l, n));
            continue;
        }
        for (auto roomPair : room)
        {
            if (abs(roomPair.second[0].first - l) <= 10 && roomPair.second.size() < m)
            {
                room[roomPair.first].push_back(make_pair(l, n));
                newRoom = false;
                break;
            }
        }
        if (newRoom)
        {
            startNumber++;
            room[startNumber].push_back(make_pair(l, n));
        }
    }

    for (auto roomPair : room)
    {
        sort(roomPair.second.begin(), roomPair.second.end(), [](const pii &a, const pii &b)
             { return a.second < b.second; });

        if (roomPair.second.size() == m)
        {
            cout << "Started!" << "\n";
        }
        else
        {
            cout << "Waiting!" << "\n";
        }
        for (size_t i = 0; i < roomPair.second.size(); i++)
        {
            cout << roomPair.second[i].first << " " << roomPair.second[i].second << "\n";
        }
    }

    return 0;
}

'PS > 백준' 카테고리의 다른 글

10025 - 게으른 백곰  (0) 2025.02.13
30804 - 과일 탕후루  (0) 2025.02.13
11899 - 괄호 끼워넣기  (0) 2025.02.13
단어 뒤집기 2 - 17413  (0) 2025.02.13
가장 큰 증가하는 부분 수열 - 11055  (0) 2025.02.13