Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.87 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. class Tasks{
  6.     public:
  7.         int start;
  8.         int end;
  9.         string jorc = "C";
  10.         int originalPlace = 0;
  11.         Tasks(){
  12.             start = 0;
  13.             end = 0;
  14.         }
  15.         Tasks(int start, int end){
  16.             start = start;
  17.             end = end;
  18.  
  19.         }
  20. };
  21.  
  22. // Sort Tasks from earliest to latest;
  23. void sortTasks(Tasks arr[], int n)
  24. {
  25.     int i;
  26.     for(i = 0; i < n; i++)
  27.     {
  28.         int j;
  29.         for(j = 0; j < n; j++)
  30.         {
  31.             if(arr[i].start < arr[j].start)
  32.             {
  33.                 Tasks temp;
  34.                 temp = arr[i];
  35.                 arr[i] = arr[j];
  36.                 arr[j] = temp;
  37.             }
  38.         }
  39.     }
  40. }
  41.  
  42. // Sort Tasks based on Original place;
  43. void revertSortTasks(Tasks arr[], int n)
  44. {
  45.     for(int i = 0; i < n; i++)
  46.     {
  47.         for(int j = 0; j < n; j++)
  48.         {
  49.             if(arr[i].originalPlace < arr[j].originalPlace)
  50.             {
  51.                 Tasks temp;
  52.                 temp = arr[i];
  53.                 arr[i] = arr[j];
  54.                 arr[j] = temp;
  55.             }
  56.         }
  57.     }
  58. }
  59.  
  60. int main(){
  61.  
  62.     int T;
  63.     scanf("%d", &T);
  64.  
  65.     string results[T];
  66.  
  67.     for(int i = 0; i < T; i++){
  68.         int howMany;
  69.         scanf("%d", &howMany);
  70.  
  71.         Tasks taskArray[howMany];
  72.  
  73.         bool possible = true;
  74.  
  75.         for(int j = 0; j < howMany; j++){
  76.             scanf("%d" "%d", &taskArray[j].start, &taskArray[j].end);
  77.             taskArray[j].originalPlace = j;
  78.         }
  79.         //sort as task por ordem de inicio;
  80.         sortTasks(taskArray, howMany);
  81.  
  82.         //setjorc(taskArray);
  83.         for (int j = 0; j < howMany; j++){
  84.             int overlaps = 0;
  85.             for (Tasks other : taskArray){
  86.                     if (taskArray[j].originalPlace != other.originalPlace){
  87.                         if (taskArray[j].start >= other.start && other.end > taskArray[j].start){
  88.                             overlaps++;
  89.                             if (other.jorc == "C"){
  90.                                 taskArray[j].jorc = "J";
  91.                             }
  92.                         }
  93.                     }
  94.                 }
  95.                 if(overlaps >= 2){
  96.                     possible = false;
  97.                     break;
  98.                 }
  99.             }
  100.  
  101.         //revert o sort;
  102.         revertSortTasks(taskArray, howMany);
  103.  
  104.         //saves results;
  105.         if (possible){
  106.             string str = taskArray[0].jorc;
  107.             for (int j = 1; j < howMany; j++){
  108.                 str = str + taskArray[j].jorc;
  109.             }
  110.             results[i] = str;
  111.         }
  112.         else{
  113.             results[i] = "IMPOSSIBLE";
  114.         }
  115.     }
  116.  
  117.     for(int i = 0; i < T; i++){
  118.         int caso = i + 1;
  119.         printf("Case #%d: %s\n", caso, results[i].c_str());
  120.     }
  121.     return 0;
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement