구현 아이디어 5분
구현 25분
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct Meeting
{
int StartMeetingSec;
int EndMeetingSec;
Meeting(int StartMeetingSec, int EndMeetingSec)
{
this->StartMeetingSec = StartMeetingSec;
this->EndMeetingSec = EndMeetingSec;
}
bool operator<(const Meeting& Meeting)
{
if(StartMeetingSec != Meeting.StartMeetingSec) return StartMeetingSec < Meeting.StartMeetingSec;
if (EndMeetingSec != Meeting.EndMeetingSec) return EndMeetingSec < Meeting.EndMeetingSec;
return false;
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
//freopen("input.txt", "rt", stdin);
vector<Meeting> VecMeetings;
int N{};
cin >> N;
int StartMeetingSec{}, EndMeetingSec{};
for (int i = 0; i < N; ++i)
{
cin >> StartMeetingSec >> EndMeetingSec;
VecMeetings.push_back(Meeting(StartMeetingSec, EndMeetingSec));
}
sort(VecMeetings.begin(), VecMeetings.end());
int NumMeeting{ 1 };
Meeting CurrentMeeting(VecMeetings[0]);
for (int i = 1; i < VecMeetings.size(); ++i)
{
Meeting NextMeeting = VecMeetings[i];
if (NextMeeting.StartMeetingSec >= CurrentMeeting.EndMeetingSec)
{
CurrentMeeting = NextMeeting;
++NumMeeting;
}
else
{
CurrentMeeting.EndMeetingSec = min(CurrentMeeting.EndMeetingSec, NextMeeting.EndMeetingSec);
}
}
cout << NumMeeting;
return 0;
}