Naxocist

TATempleFestival

Apr 3rd, 2022
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define endll '\n'
  3. using namespace std;
  4. using pi = pair<int, int>;
  5. using pii = pair<int, pi>;
  6.  
  7. const int N = 1e5 + 3;
  8. int seats[N];
  9.  
  10. int main(){
  11.     int n; scanf("%d", &n);
  12.  
  13.     vector<pii> people;
  14.  
  15.     for(int i=1; i<=n; ++i){
  16.         seats[i] = -1;
  17.         int in, out; scanf("%d %d", &in, &out);
  18.         if(in < 1700 || in > 2300 || out < 1700 || out > 2300 || in >= out) continue;
  19.  
  20.         // sort : time -> 0 -> 1 -> id
  21.         people.push_back({out, {0, i}}); // exit festival
  22.         people.push_back({in, {1, i}}); // enter festival
  23.  
  24.     }
  25.  
  26.     priority_queue<int, vector<int>, greater<int>> pq;
  27.  
  28.     for(int i=1; i<=n; ++i) pq.push(i);
  29.  
  30.     sort(people.begin(), people.end());
  31.  
  32.     for(auto p : people){
  33.  
  34.         int action = p.second.first, id = p.second.second;
  35.  
  36.         if(action == 1){
  37.             seats[id] = pq.top();
  38.             pq.pop();
  39.         }else{
  40.             pq.push(seats[id]);
  41.         }
  42.     }
  43.  
  44.     for(int i=1; i<=n; ++i) printf("%d\n", seats[i]);
  45.     return 0;
  46. }
  47.  
Advertisement
Add Comment
Please, Sign In to add comment