Advertisement
Ritam_C

Concert Tickets

May 1st, 2021
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. typedef unsigned long long ull;
  4. typedef long double ld;
  5. #define vi vector<int>
  6. #define vll vector<long long>
  7. #define pb push_back
  8. #define p_b pop_back
  9. #define FOR(a, b) for(int i = a; i <= b; i++)
  10. #define tests() int t; cin >> t; while(t--)
  11. #define input(a, n) for(int i = 0; i < n; i++){int x; cin >> x; a.pb(x);}
  12. #define MOD (ull)1000000007
  13. using namespace std;
  14.  
  15. ll bins(vector<pair<ll, int>>& v, int s, int e, ll x){
  16.     if(e > s){
  17.         int mid = s+(e-s)/2;
  18.         if(v[mid].first == x){
  19.             ll val = v[mid].first;
  20.             v[mid].second--;
  21.             if(v[mid].second == 0){
  22.                 v.erase(v.begin()+mid);
  23.             }
  24.             return val;
  25.         } else if(v[mid].first > x && v[s].first < x){
  26.             if(v[mid-1].first < x){
  27.                 ll val = v[mid-1].first;
  28.                 v[mid-1].second--;
  29.                 if(v[mid-1].second == 0){
  30.                     v.erase(v.begin()+mid-1);
  31.                 }
  32.                 return val;
  33.             } else{
  34.                 return bins(v, s, mid, x);
  35.             }
  36.         } else{
  37.             if(v[mid+1].first > x){
  38.                 ll val = v[mid].first;
  39.                 v[mid].second--;
  40.                 if(v[mid].second == 0){
  41.                     v.erase(v.begin()+mid);
  42.                 }
  43.                 return val;
  44.             } else{
  45.                 return bins(v, mid, e, x);
  46.             }
  47.         }
  48.     } else{
  49.         ll val = v[s].first;
  50.         v[s].second--;
  51.         if(v[s].second == 0){
  52.             v.erase(v.begin()+s);
  53.         }
  54.         return val;
  55.     }
  56. }
  57.  
  58. int main(){
  59.     ios_base::sync_with_stdio(false);
  60.     cin.tie(NULL);
  61.     int n, m;
  62.     cin >> n >> m;
  63.     map<ll, int> a;
  64.     FOR(0, n-1){
  65.         ll x;
  66.         cin >> x;
  67.         a[x]++;
  68.     }
  69.     vector<pair<ll, int>> v;
  70.     for(auto i = a.begin(); i != a.end(); i++){
  71.         v.pb({i->first, i->second});
  72.     }
  73.     FOR(0, m-1){
  74.         ll t;
  75.         cin >> t;
  76.         if(v.size() > 0){
  77.             if(v[v.size()-1].first <= t){
  78.                 cout << v[v.size()-1].first << "\n";
  79.                 v[v.size()-1].second--;
  80.                 if(v[v.size()-1].second == 0){
  81.                     v.erase(v.end()-1);
  82.                 }
  83.             } else if(v[0].first > t){
  84.                 cout << "-1\n";
  85.             } else{
  86.                 cout << bins(v, 0, v.size()-1, t) << "\n";
  87.             }
  88.         } else{
  89.             cout << "-1\n";
  90.         }
  91.     }
  92.  
  93.     /*FOR(0, v.size()-1){
  94.         cout << v[i].first << " " << v[i].second << "\n";
  95.     }*/
  96.     return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement