Advertisement
Guest User

Untitled

a guest
Apr 3rd, 2020
321
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.86 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5. #include <cmath>
  6. #include <set>
  7. #include <numeric>
  8.  
  9. #define ll long long
  10.  
  11. using namespace std;
  12.  
  13.  
  14. template <typename T>
  15. vector<size_t> sort_indexes(const vector<T> &v) {
  16.     vector<size_t> idx(v.size());
  17.     iota(idx.begin(), idx.end(), 0);
  18.     stable_sort(idx.begin(), idx.end(),
  19.         [&v](size_t i1, size_t i2) {return v[i1].second < v[i2].second;});
  20.  
  21.     return idx;
  22. }
  23.  
  24.  
  25. int main()
  26. {
  27.     ios_base::sync_with_stdio(false);
  28.  
  29.     ll t;
  30.     cin >> t;
  31.     for (int num = 0; num < t; ++num) {
  32.         ll n, s, e;
  33.         cin >> n;
  34.         vector<pair<int, int>> events(n);
  35.         vector<int> check(n, 0);
  36.         string res;
  37.         for (int i = 0; i < n; ++i) {
  38.             cin >> s >> e;
  39.             events[i] = make_pair(s, e);
  40.         }
  41.  
  42.         auto idx = sort_indexes(events);
  43.         std::sort(events.begin(), events.end(), [](auto &left, auto &right) {
  44.             return left.second < right.second;
  45.         });
  46.  
  47.  
  48.         ll cur_c = -1, cur_j = -1;
  49.         for (int i = 0; i < events.size(); ++i) {
  50.             if (events[i].first >= cur_c) {
  51.                 check[i] = 1;
  52.                 cur_c = events[i].second;
  53.             } else if (events[i].first >= cur_j) {
  54.                 check[i] = 2;
  55.                 cur_j = events[i].second;
  56.             }
  57.         }
  58.  
  59.         cout << "Case #" << num + 1<< ": ";
  60.         if (count(check.begin(), check.end(), 0) > 0) {
  61.             cout << "IMPOSSIBLE";
  62.         } else {
  63.             res.resize(n);
  64.             for (int i = 0; i < n; ++i) {
  65.                 if (check[i] == 1)
  66.                     res[idx[i]] = 'J';
  67.                 else if (check[i] == 2)
  68.                     res[idx[i]] = 'C';
  69.             }
  70.             cout << res;
  71.        
  72.         }
  73.         cout << "\n";
  74.     }
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement