Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.71 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].start > other.start && other.end > taskArray[j].start){
  87.                     overlaps++;
  88.                     if (other.jorc == "C"){
  89.                         taskArray[j].jorc = "J";
  90.                     }
  91.                 }
  92.                 if(overlaps >= 2){
  93.                     possible = false;
  94.                     break;
  95.                 }
  96.             }
  97.         }
  98.  
  99.         //revert o sort;
  100.         revertSortTasks(taskArray, howMany);
  101.  
  102.         //saves results;
  103.         if (possible){
  104.             string str = taskArray[0].jorc;
  105.             for (int j = 1; j < howMany; j++){
  106.                 str = str + taskArray[j].jorc;
  107.             }
  108.             results[i] = str;
  109.         }
  110.         else{
  111.             results[i] = "IMPOSSIBLE";
  112.         }
  113.     }
  114.  
  115.     for(int i = 0; i < T; i++){
  116.         int caso = i + 1;
  117.         printf("Case #%d: %s\n", caso, results[i].c_str());
  118.     }
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement