Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define evento pair<pair<int, int>, int>
- #define tiempo first.first
- #define tipoEvento first.second
- #define id second
- int main()
- {
- int n, llegada, salida;
- cin >> n;
- vector <evento> v;
- v.reserve(n*2);
- for(int i=0; i<n; i++)
- {
- cin >> llegada >> salida;
- v.push_back({{llegada, 0}, i});
- v.push_back({{salida, 1}, i});
- }
- sort(v.begin(), v.end());
- stack <int> habitaciones;
- for(int i=n; i>=1; i--)
- habitaciones.push(i);
- vector <int> asignado(n, -10);
- int maxHab = 0;
- for(int i=0; i<v.size(); i++)
- {
- if(v[i].tipoEvento == 0)
- {
- asignado[v[i].id] = habitaciones.top();
- maxHab = max(maxHab, habitaciones.top());
- habitaciones.pop();
- }
- else
- {
- habitaciones.push(asignado[v[i].id]);
- }
- }
- cout << maxHab << endl;
- for(int i=0; i<n; i++)
- cout << asignado[i] << " ";
- cout << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment