Hasan1026

Dishwasher.cpp

Dec 3rd, 2021 (edited)
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.15 KB | None | 0 0
  1. #include <iostream>
  2. #include "LinkedStack.h"
  3. #include "ArrStack.h"
  4.  
  5. using namespace std;
  6.  
  7. class dish_event
  8. {
  9.  
  10. public:
  11.     int friend_num, dish_DS_time, dish_size;
  12.     dish_event() {}
  13.     dish_event(int friend_num, int dish_DS_time, int dish_size)
  14.     {
  15.         this->friend_num = friend_num;
  16.         this->dish_size = dish_size;
  17.         this->dish_DS_time = dish_DS_time;
  18.     }
  19.     dish_event(dish_event *d)
  20.     {
  21.         this->friend_num = d->friend_num;
  22.         this->dish_size = d->dish_size;
  23.         this->dish_DS_time = d->dish_DS_time;
  24.     }
  25. };
  26.  
  27. int main()
  28. {
  29.     int friend_total, dish_total;
  30.     int friend_num, dish_DS_time, dish_size;
  31.     int iter = 0;
  32.  
  33.     cin >> friend_total >> dish_total;
  34.     int all_dish_size[dish_total];
  35.  
  36.     for (int i = 0; i < dish_total; i++)
  37.         cin >> all_dish_size[i];
  38.  
  39.     // LinkedStack<dish_event> dirty_stack(friend_total * dish_total);
  40.     // LinkedStack<int> clean_stack(friend_total * dish_total);
  41.     // LinkedStack<int> complete_meal(friend_total);
  42.  
  43.     ArrStack<dish_event> dirty_stack(friend_total * dish_total);
  44.     ArrStack<int> clean_stack(friend_total * dish_total);
  45.     ArrStack<int> complete_meal(friend_total);
  46.  
  47.     while (1)
  48.     {
  49.         cin >> friend_num >> dish_DS_time >> dish_size;
  50.         iter++;
  51.         if (!friend_num)
  52.             break;
  53.  
  54.         if (dish_total == dish_size)
  55.             complete_meal.push(friend_num);
  56.  
  57.         dirty_stack.push(new dish_event(friend_num, dish_DS_time, dish_size));
  58.  
  59.         if (iter == 1)
  60.         {
  61.             clean_stack.push(dish_DS_time + all_dish_size[dish_size - 1]);
  62.             dirty_stack.pop();
  63.         }
  64.         while (dirty_stack.length() > 0)
  65.         {
  66.             dish_event temp = dirty_stack.topValue();
  67.             if (temp.dish_DS_time >= clean_stack.topValue())
  68.             {
  69.                 clean_stack.push(temp.dish_DS_time + all_dish_size[dish_size - 1]);
  70.                 dirty_stack.pop();
  71.             }
  72.  
  73.             else
  74.             {
  75.                 break;
  76.             }
  77.         }
  78.     }
  79.  
  80.     cout << "ds len: " << dirty_stack.length() << " cs len: " << clean_stack.length() << endl;
  81.     while (dirty_stack.length() > 0)
  82.     {
  83.         dish_event temp = dirty_stack.topValue();
  84.  
  85.         clean_stack.push(max(temp.dish_DS_time, clean_stack.topValue()) + all_dish_size[temp.dish_size - 1]);
  86.         dirty_stack.pop();
  87.     }
  88.  
  89.     int total_time = clean_stack.topValue();
  90.     cout << total_time << endl;
  91.  
  92.     int len = clean_stack.length();
  93.     int dish_times[len];
  94.  
  95.     for (int j = len - 1; j >= 0; j--)
  96.         dish_times[j] = clean_stack.pop();
  97.  
  98.     for (int i = 0; i < len; i++)
  99.     {
  100.         cout << dish_times[i];
  101.         if (i < len - 1)
  102.             cout << ",";
  103.     }
  104.     cout << endl;
  105.  
  106.     if (complete_meal.length() == friend_total)
  107.     {
  108.         cout << "Y" << endl;
  109.         while (complete_meal.length() > 0)
  110.         {
  111.             cout << complete_meal.pop() << ",";
  112.         }
  113.     }
  114.     else
  115.     {
  116.         cout << "N" << endl;
  117.         while (complete_meal.length() > 0)
  118.         {
  119.             cout << complete_meal.pop() << ",";
  120.         }
  121.     }
  122.  
  123.     return 0;
  124. }
Add Comment
Please, Sign In to add comment