[softeer/C++] [21년 재직자 대회 예선] 회의실 예약

mani·2023년 4월 8일
0

softeer

목록 보기
9/11

[21년 재직자 대회 예선] 회의실 예약

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

using namespace std;



int main(int argc, char** argv)
{
	int N, M;
	cin >> N >> M;
	string input;
	vector<string> name;

	for (int i = 0; i < N; i++) {
		cin >> input;
		name.push_back(input);
	}

	sort(name.begin(), name.end());

	unordered_map<string, int> umap;

	for (int i = 0; i < N; i++) {
		umap[name[i]] = i;
	}

	int s, t;
	int table[50][9] = { 0, };
	for (int i = 0; i < M; i++) {
		cin >> input >> s >> t;
		for (int j = s - 9; j < t - 9; j++) {
			table[umap[input]][j] = 1;
		}
	}

	for (int i = 0; i < N; i++) {
		vector<string> available;
		if (table[i][0] == 0) {
			available.push_back("09");
		}
		for (int j = 0; j < 8; j++) {
			if (table[i][j] ^ table[i][j + 1]) {
				available.push_back(to_string(j + 10));
			}
		}
		if (available.size() % 2) {
			available.push_back("18");
		}

		cout << "Room " << name[i] << ":\n";

		if (available.size() == 0) {
			cout << "Not available\n";
		}
		else {
			cout << available.size() / 2 << " available:\n";
		}

		for (int i = 0; i < available.size(); i += 2) {
			cout << available[i] << "-" << available[i + 1] << "\n";
		}

		if (i == N - 1) break;
		cout << "-----\n";
	}

	return 0;
}
profile
log

0개의 댓글