Infernale

Google Code Jam 2020 Q1.3 [Parenting Partnering]

Apr 4th, 2020
441
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.07 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define INF INT_MAX
  5. #define LINF LLONG_MAX
  6. #define forin(data) for(auto &i : data)
  7. #define debug(x) cerr << #x << " = " << x << endl;
  8.  
  9. using ll = long long;
  10. using pi = pair<int, int>;
  11. using vi = vector<int>;
  12. using vii = vector<vi>;
  13. using vl = vector<ll>;
  14.  
  15. void init(){
  16.     #ifdef LOCAL
  17.         freopen("input.txt", "r", stdin);
  18.         freopen("output.txt", "w", stdout);
  19.         freopen("log.txt", "w", stderr);
  20.     #else
  21.         cin.tie(0); cout.tie(0);
  22.         ios_base::sync_with_stdio(0);
  23.     #endif
  24. }
  25.  
  26. bool sortStartTime(vi &v1, vi &v2){
  27.     return v1[0] < v2[0];
  28. }
  29.  
  30. bool sortIndex(vi &v1, vi &v2){
  31.     return v1[2] < v2[2];
  32. }
  33.  
  34. int main(){
  35.     init()
  36.     int tc;
  37.     cin >> tc;
  38.     for(int i=1; i<=tc; i++){
  39.         bool check = true;
  40.         int n, index = 0;
  41.         cin >> n;
  42.         string ans = "";
  43.         vii arr(n, vi(4));
  44.         for(int i=0; i<n; i++){
  45.             cin >> arr[i][0] >> arr[i][1];
  46.             arr[i][2] = i;
  47.         }
  48.         sort(arr.begin(), arr.end(), sortStartTime);
  49.         int j, c;
  50.         j = c = -1;
  51.         for(int i=0; i<n; i++){
  52.             if(arr[i][0] >= j){
  53.                 j = -1;
  54.             }
  55.             if(arr[i][0] >= c){
  56.                 c = -1;
  57.             }
  58.             if(j != -1 && c != -1){
  59.                 check = false;
  60.                 break;
  61.             }
  62.             if(j == -1){
  63.                 j = arr[i][1];
  64.                 arr[i][3] = 0;
  65.                 //ans += "J";
  66.                 //cout << "J Assigned! Cost: " << j << endl;
  67.             }else{
  68.                 c = arr[i][1];
  69.                 arr[i][3] = 1;
  70.                 //ans += "C";
  71.                 //cout << "C Assigned! Cost: " << c << endl;
  72.             }
  73.         }
  74.         sort(arr.begin(), arr.end(), sortIndex);
  75.         if(!check){
  76.             ans = "IMPOSSIBLE";
  77.         }else{
  78.             for(int i=0; i<n; i++){
  79.                 ans += (arr[i][3] == 0 ? "J" : "C");
  80.             }
  81.         }
  82.         cout << "Case #" << i << ": " << ans << endl;
  83.     }
  84.     return 0;
  85. }
Add Comment
Please, Sign In to add comment