제약조건이나 엣지값이 안 맞는지 30점 나오네요,,ㅜㅜ
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void check_time(vector<vector<int>> &ava_time, int index, int start, int end) {
for (int i = start; i < end; i++) {
for (int j = 0; j < ava_time[index].size(); j++) {
if (ava_time[index][j] == i)ava_time[index].erase(ava_time[index].begin() + j);
}
}
}
int main() {
int num_room, use_room;
cin >> num_room >> use_room;
vector<vector<int>> ava_time;
vector<string> rooms;
string a;
//9-18
for (int i = 0; i < num_room; i++) {
cin >> a;
rooms.push_back(a);
vector<int> hours = { 9,10,11,12,13,14,15,16,17,18 };
ava_time.push_back(hours);
}
sort(rooms.begin(), rooms.end());
for (int j = 0; j < use_room; j++) {
cin >> a;
int bg, en, index = 0;
cin >> bg >> en;
for (int k = 0; k < num_room; k++) {
if (rooms[k] == a) index = k;
}
check_time(ava_time,index, bg, en);
}
for (int i = 0; i < num_room; i++) {
cout << "Room "<<rooms[i]<<":" << endl;
int ran = ava_time[i][0];
int count = 0;
int where = 0;
int avail = 0;
vector<string> ans;
for (int j = 9; j <= 18; j++) {
if (ran == 18) {
cout << "Not available" << endl;
break;
}
if (ava_time[i][where] == j && j!=18) {
count++;
where++;
}
else if (ava_time[i][where] == 18 && j==18) {
if (count != 0) {
string aa = to_string(j - count) + "-" + to_string(j);
ans.push_back(aa);
avail++;
}
}
else {
if (count != 0) {
string aa;
if(j-count == 9) aa = "09-" + to_string(j);
else aa = to_string(j - count) + "-" + to_string(j);
ans.push_back(aa);
avail++;
}
count = 0;
}
}
if (avail != 0) {
cout << avail << " available:" << endl;
for (int ll = 0; ll < ans.size(); ll++) cout << ans[ll] << endl;
}
if(i != num_room-1) cout <<"-----"<< endl;
}
return 0;
}