Final: How Many Rooms?
Completed
Print the fewest rooms needed for n meetings so overlapping meetings never share a room (a meeting can start right when another ends). Sort by start; keep a min-heap of end times.
Input
Line 1: n. Then n lines start end.
Output
One number.
Example
Input
3 0 30 5 10 15 20
Output
2
Editor
C++
Hints
Sort meetings by start.
Pop every end time ≤ the new start, then push the new end.
The largest heap size is the answer.
Solution explanation
The heap holds meetings in progress; its size is the number of busy rooms.
Show solution
#include <algorithm>
#include <functional>
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<pair<int, int>> m(n);
for (auto& [s, e] : m) cin >> s >> e;
sort(m.begin(), m.end());
priority_queue<int, vector<int>, greater<int>> ends;
size_t rooms = 0;
for (auto [s, e] : m) {
while (!ends.empty() && ends.top() <= s) ends.pop();
ends.push(e);
rooms = max(rooms, ends.size());
}
cout << rooms << endl;
return 0;
} Output
Answer
You can practice without logging in. Log in to save completion.
Save your progress
You're practising as a guest, so your progress won't be saved.
- Track every lab you complete
- Earn verifiable lab certificates
- See your progress in every module