/*
Given an array of numeric pairs representing the start and end times of scheduled meetings, find the maximum number of meetings that can be held in a room if only one meeting can occur in the room at once.
Example
Input: [(8.5, 9.5), (11, 11.25), (9, 11), (11.5, 13), (10, 10.75), (8, 9)]
Output: 4 (The following meetings can occur in the given order: (8, 9), (10, 10.75), (11, 11.25), 11.5, 13))
(8, 9)(8.5, 9.5)(9, 11)
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int maxmeetings( vector< pair< double ,double >> & meetings) {
sort( meetings.begin ( ) , meetings.end ( ) ,
[ ] ( auto & a , auto & b) {
return a.second < b.second ;
} ) ;
int count = 1 ;
double lastend = meetings[ 0 ] .second ;
for ( int i = 1 ; i< meetings.size ( ) ; i++ ) {
if ( meetings[ i] .first >= lastend) {
count++ ;
lastend = meetings[ i] .second ;
}
}
return count;
}
int main( ) {
vector< pair< double ,double >> meetings = { { 8 , 8.5 } , { 11 , 11.25 } , { 9 , 11 } , { 11.5 , 13 } , { 10 , 10.75 } , { 8 , 9 } } ;
cout << maxmeetings( meetings) ;
return 0 ;
}
LyoKR2l2ZW4gYW4gYXJyYXkgb2YgbnVtZXJpYyBwYWlycyByZXByZXNlbnRpbmcgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgb2Ygc2NoZWR1bGVkIG1lZXRpbmdzLCBmaW5kIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZWV0aW5ncyB0aGF0IGNhbiBiZSBoZWxkIGluIGEgcm9vbSBpZiBvbmx5IG9uZSBtZWV0aW5nIGNhbiBvY2N1ciBpbiB0aGUgcm9vbSBhdCBvbmNlLgpFeGFtcGxlCklucHV0OiBbKDguNSwgOS41KSwgKDExLCAxMS4yNSksICg5LCAxMSksICgxMS41LCAxMyksICgxMCwgMTAuNzUpLCAoOCwgOSldCk91dHB1dDogNCAoVGhlIGZvbGxvd2luZyBtZWV0aW5ncyBjYW4gb2NjdXIgaW4gdGhlIGdpdmVuIG9yZGVyOiAoOCwgOSksICgxMCwgMTAuNzUpLCAoMTEsIDExLjI1KSwgMTEuNSwgMTMpKQoKKDgsIDkpKDguNSwgOS41KSg5LCAxMSkKIAoqLwoKI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBtYXhtZWV0aW5ncyh2ZWN0b3I8cGFpcjxkb3VibGUsZG91YmxlPj4mIG1lZXRpbmdzKXsKCQoJc29ydChtZWV0aW5ncy5iZWdpbigpICwgbWVldGluZ3MuZW5kKCksCgkJW10oYXV0byAmYSAsIGF1dG8gJmIpewoJCQlyZXR1cm4gYS5zZWNvbmQgPCBiLnNlY29uZDsKCQl9KTsKCQoJaW50IGNvdW50ID0gMTsKCWRvdWJsZSBsYXN0ZW5kID0gbWVldGluZ3NbMF0uc2Vjb25kOwoJCglmb3IoaW50IGkgPSAxIDsgaTxtZWV0aW5ncy5zaXplKCkgOyBpKyspewoJCWlmKG1lZXRpbmdzW2ldLmZpcnN0ID49IGxhc3RlbmQpewoJCQljb3VudCsrOwoJCQlsYXN0ZW5kID0gbWVldGluZ3NbaV0uc2Vjb25kOwoJCX0KCX0KCXJldHVybiBjb3VudDsKfQppbnQgbWFpbigpIHsKCXZlY3RvcjxwYWlyPGRvdWJsZSxkb3VibGU+PiBtZWV0aW5ncyA9IHt7OCwgOC41fSwgezExLCAxMS4yNX0sIHs5LCAxMX0sIHsxMS41LCAxM30sIHsxMCwgMTAuNzV9LCB7OCwgOX19OwoJCgljb3V0PDwgbWF4bWVldGluZ3MobWVldGluZ3MpOwoJcmV0dXJuIDA7Cn0=