- 문제 링크 : boj.kr/20006
- 난이도 : S2
- 태그 : 구현
코드
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define INF 0x7FFFFFFF
using namespace std;
using ll = long long;
using ld = long double;
using pii = pair<int,int>;
using pll = pair<ll, ll>;
struct player{
int level;
string id;
};
struct room{
int level;
int limit;
vector<player> players;
room(int level, int limit) {
this->level = level;
this->limit = limit;
}
bool join(player p) {
if(players.size() == limit) return false;
if(abs(level - p.level) > 10) return false;
players.emplace_back(p);
return true;
}
};
int main()
{
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int p, m;
cin >> p >> m;
vector<room> rooms;
for(int i = 0; i < p; i++) {
player p;
cin >> p.level >> p.id;
bool flag = false;
for(auto &e : rooms) {
if(e.join(p)) {
flag = true;
break;
}
}
if(!flag) {
rooms.emplace_back(p.level, m);
rooms.back().join(p);
}
}
for(auto room : rooms) {
if(room.limit == room.players.size()) cout << "Started!\n";
else cout << "Waiting!\n";
sort(all(room.players), [](player a, player b){return a.id < b.id;});
for(auto e : room.players) {
cout << e.level << " " << e.id << "\n";
}
}
return 0;
}
풀이
어렵지 않은 단순 구현 문제이다.
728x90
'PS' 카테고리의 다른 글
BOJ 6236 : 용돈 관리 (0) | 2024.12.18 |
---|---|
BOJ 9693 : 시파르 (0) | 2024.12.17 |
BOJ 2942 : 퍼거슨과 사과 (1) | 2024.12.15 |
BOJ 26168 : 배열 전체 탐색하기 (0) | 2024.12.14 |
BOJ 24511 : queuestack (0) | 2024.12.14 |