Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.39 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define pi acos(-1.0)
  3. #define ll int
  4. #define s(n) scanf("%d", &n)
  5.  
  6. using namespace std;
  7.  
  8. struct task{
  9.     ll start, end, index, who;
  10. };
  11.  
  12. /*
  13. 1 = c
  14. 2 = j
  15. */
  16.  
  17. bool crit(task a, task b){
  18.     if(a.start > b.start) return false;
  19.     if(a.start < b.start) return true;
  20.     if(a.end > b.end) return false;
  21.     return true;
  22. }
  23.  
  24. bool crit2(task a, task b){
  25.     if(a.index > b.index) return false;
  26.     return true;
  27. }
  28.  
  29. int main()
  30. {
  31.     ll test;
  32.     s(test);
  33.     ll loop;
  34.     for(loop = 1; loop <= test; loop++)
  35.     {
  36.         ll n;
  37.         task t[20000];
  38.  
  39.         s(n);
  40.         ll i;
  41.        
  42.         for(i = 1; i <= n; i++){
  43.             s(t[i].start); s(t[i].end);
  44.             t[i].index = i;
  45.         }
  46.         sort(t+1, t+1+n, crit);
  47.  
  48.         ll oneAss , twoAss = 0;
  49.         bool impossible = false;
  50.  
  51.         for(i = 1; i <= n && !impossible; i++){
  52.             if(i==1){
  53.                 t[i].who = 1;
  54.                 oneAss = i;
  55.             }  
  56.             else
  57.             {
  58.                 if(t[oneAss].end <= t[i].start){
  59.                     t[i].who = 1;
  60.                     oneAss = i;
  61.                 }
  62.                 else if(twoAss == 0){
  63.                     t[i].who = 2;
  64.                     twoAss = i;
  65.                 }
  66.                 else if(t[twoAss].end <= t[i].start){
  67.                     t[i].who = 2;
  68.                     twoAss = i;
  69.                 }
  70.                 else {
  71.                     impossible = true;
  72.                 }
  73.             }
  74.         }
  75.  
  76.         if(impossible) printf("Case #%d: IMPOSSIBLE\n", loop);
  77.         else {
  78.             sort(t+1, t+1+n, crit2);
  79.             printf("Case #%d: ", loop);
  80.             for(i=1; i<=n; i++){
  81.                 if(t[i].who == 1) printf("C");
  82.                 else printf("J");
  83.             }
  84.             printf("\n");
  85.         }
  86.     }
  87.  
  88.     return 0;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement