알고리즘

[알고리즘] 백준 20006 - 랭킹전 대기열 (C++)

blueberrysoda 2024. 9. 10. 23:33

[문제 링크] : https://www.acmicpc.net/problem/20006

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(){
    int N, M;
    cin >> N >> M;
    vector<pair<string, int>> V[310];

    for(int i=0; i<N; i++){
        int inp;
        string s;
        bool f = false;
        cin >> inp >> s;

        for(int j=0; j<=i; j++){
            if(V[j].size() < M && V[j].size() > 0){
                if(abs(V[j][0].second - inp) <= 10){
                    f = true;
                    V[j].push_back({s, inp});
                    break;
                }
            }
        }

        if(f == false){
            V[i].push_back({s, inp});
        }
    }

    for(int i=0; i<300; i++){
        if(V[i].size() == 0){
            continue;
        }
        else if(V[i].size() >= M){
            cout << "Started!\n";
        }
        else if(V[i].size() > 0 && V[i].size() < M){
            cout << "Waiting!\n";
        }

        sort(V[i].begin(), V[i].end());

        for(int j=0; j<V[i].size(); j++){
            cout << V[i][j].second << " " << V[i][j].first << "\n";
        }
    }
    return 0;
}