#include <iostream>
#include <bits/stdc++.h>
using namespace std;
class Interval
{
public :
int startTime;
int endTime;
Interval(int startTimeObj,int endTimeObj)
{
startTime = startTimeObj;
endTime = endTimeObj;
}
};
class RoomService
{
public:
int roomNum;
unordered_map <int ,vector<Interval>> roomMap;
RoomService(int n)
{
roomNum =n;
}
int createMeeting(int startTime,int endTime)
{
int roomAssigned =-1;
Interval givenInterval(startTime,endTime);
for(int i=0;i<roomNum;i++)
{
if(!roomMap.count(i))
{
roomAssigned = i;
break;
}
else
{
int isAvbl =0;
for(auto it : roomMap[i])
{
if(it.endTime < startTime || endTime < it.startTime)
{
isAvbl = 1;
}
else
{
isAvbl=0;
break;
}
}
if(isAvbl)
{
roomAssigned = i;
break;
}
}
}
if(roomAssigned!=-1)
{
roomMap[roomAssigned].push_back(givenInterval);
return roomAssigned;
}
else
{
// throw expception
return roomAssigned;
}
}
};
int main() {
RoomService rs (2);
cout<<"Started assigning";
cout<<"\n";
cout<<rs.createMeeting(1000,2000);
cout<<"\n";
cout<<rs.createMeeting(500,700);
cout<<"\n";
cout<<rs.createMeeting(1100,1700);
cout<<"\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEludGVydmFsCnsKCXB1YmxpYyA6CglpbnQgc3RhcnRUaW1lOwoJaW50IGVuZFRpbWU7CglJbnRlcnZhbChpbnQgc3RhcnRUaW1lT2JqLGludCBlbmRUaW1lT2JqKQoJewoJCXN0YXJ0VGltZSA9IHN0YXJ0VGltZU9iajsKCQllbmRUaW1lID0gZW5kVGltZU9iajsKCX0KfTsKY2xhc3MgUm9vbVNlcnZpY2UKewoJcHVibGljOgoJaW50IHJvb21OdW07Cgl1bm9yZGVyZWRfbWFwIDxpbnQgLHZlY3RvcjxJbnRlcnZhbD4+IHJvb21NYXA7CglSb29tU2VydmljZShpbnQgbikKCXsKCQkKCQlyb29tTnVtID1uOwoJfQoJCglpbnQgY3JlYXRlTWVldGluZyhpbnQgc3RhcnRUaW1lLGludCBlbmRUaW1lKQoJewoJCWludCByb29tQXNzaWduZWQgPS0xOwoJCUludGVydmFsIGdpdmVuSW50ZXJ2YWwoc3RhcnRUaW1lLGVuZFRpbWUpOwoJCWZvcihpbnQgaT0wO2k8cm9vbU51bTtpKyspCgkJewoJCQlpZighcm9vbU1hcC5jb3VudChpKSkKCQkJewoJCQkJcm9vbUFzc2lnbmVkID0gaTsKCQkJCWJyZWFrOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJaW50IGlzQXZibCA9MDsKCQkJCWZvcihhdXRvIGl0IDogcm9vbU1hcFtpXSkKCQkJCXsKCQkJCQlpZihpdC5lbmRUaW1lIDwgc3RhcnRUaW1lIHx8IGVuZFRpbWUgPCBpdC5zdGFydFRpbWUpCgkJCQkJewoJCQkJCQlpc0F2YmwgPSAxOwoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQlpc0F2Ymw9MDsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCQoJCQkJfQoJCQkJCgkJCQlpZihpc0F2YmwpCgkJCQl7ICAgCgkJCQkJcm9vbUFzc2lnbmVkID0gaTsKCQkJCQlicmVhazsKCQkJCX0KCQkJfQoJCX0KCQlpZihyb29tQXNzaWduZWQhPS0xKQoJCXsKCQkJcm9vbU1hcFtyb29tQXNzaWduZWRdLnB1c2hfYmFjayhnaXZlbkludGVydmFsKTsKCQkJcmV0dXJuIHJvb21Bc3NpZ25lZDsKCQl9CgkJZWxzZQoJCXsKCQkJLy8gdGhyb3cgZXhwY2VwdGlvbgoJCQlyZXR1cm4gcm9vbUFzc2lnbmVkOwoJCX0KCX0KfTsKCmludCBtYWluKCkgewoJUm9vbVNlcnZpY2UgcnMgKDIpOwoJY291dDw8IlN0YXJ0ZWQgYXNzaWduaW5nIjsKCWNvdXQ8PCJcbiI7Cgljb3V0PDxycy5jcmVhdGVNZWV0aW5nKDEwMDAsMjAwMCk7Cgljb3V0PDwiXG4iOwoJY291dDw8cnMuY3JlYXRlTWVldGluZyg1MDAsNzAwKTsKCWNvdXQ8PCJcbiI7Cgljb3V0PDxycy5jcmVhdGVNZWV0aW5nKDExMDAsMTcwMCk7Cgljb3V0PDwiXG4iOwoJcmV0dXJuIDA7Cn0=