Advertisement
Josif_tepe

Untitled

Dec 12th, 2024
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.90 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. const int max_size = 1000;
  5. struct magacin {
  6.     string a[max_size];
  7.     int at;
  8.    
  9.     void init() {
  10.         at = -1;
  11.     }
  12.    
  13.     bool isFull() {
  14.         if(at == max_size - 1) {
  15.             return true;
  16.         }
  17.         return false;
  18.     }
  19.     bool isEmpty() {
  20.         if(at == -1) {
  21.             return true;
  22.         }
  23.         return false;
  24.     }
  25.     void push(string s) {
  26.         if(isFull()) {
  27.             cout << "Full stack size!" << endl;
  28.             return;
  29.         }
  30.         at++;
  31.         a[at] = s;
  32.     }
  33.     string pop() {
  34.         if(isEmpty()) {
  35.             cout << "Stack is empty!" << endl;
  36.             exit(0);
  37.         }
  38.         string s = a[at];
  39.         at--;
  40.         return s;
  41.     }
  42.     string top() {
  43.         if(isEmpty()) {
  44.             cout << "Stack is empty!" << endl;
  45.             exit(0);
  46.         }
  47.         return a[at];
  48.     }
  49.     int size() {
  50.         return at + 1;
  51.     }
  52.    
  53.    
  54. };
  55.  
  56. struct red {
  57.     string a[max_size];
  58.     int front, rear;
  59.    
  60.     void init() {
  61.         front = 0;
  62.         rear = -1;
  63.     }
  64.    
  65.     bool isEmpty() {
  66.         if(rear == -1) {
  67.             return true;
  68.         }
  69.         return false;
  70.     }
  71.    
  72.     bool isFull() {
  73.         if(rear == max_size - 1) {
  74.             return true;
  75.         }
  76.         return false;
  77.     }
  78.     void push(string s) {
  79.         if(isFull()) {
  80.             cout << "Queue is full" << endl;
  81.             exit(0); // terminate/exit the program
  82.         }
  83.         rear++;
  84.         a[rear] = s;
  85.     }
  86.    
  87.     string pop() {
  88.         if(isEmpty()) {
  89.             cout << "Queue is empty!" << endl;
  90.             exit(0);
  91.         }
  92.         string s = a[front];
  93.         for(int i = front; i < rear; i++) {
  94.             a[i] = a[i + 1];
  95.         }
  96.         rear--;
  97.         return s;
  98.     }
  99.    
  100.     string peek() {
  101.         if(isEmpty()) {
  102.             cout << "Queue is empty! " << endl;
  103.             exit(0);
  104.         }
  105.         return a[front];
  106.     }
  107.     int size() {
  108.         return rear + 1;
  109.     }
  110.    
  111. };
  112.  
  113. int get_number_of_unpaired_shoes(red Q) {
  114.     magacin st;
  115.     st.init();
  116.    
  117.     int paired_shoes = 0;
  118.     while(!Q.isEmpty()) {
  119.         string shoe = Q.peek();
  120.         Q.pop();
  121.        
  122.         if(st.size() > 0 && st.top() != shoe) {
  123.             st.pop();
  124.             paired_shoes++;
  125.         }
  126.         else {
  127.             st.push(shoe);
  128.         }
  129.     }
  130.    
  131.     cout << "Number of paired shoes: " << paired_shoes << endl;
  132.    
  133.     cout << "Number of unpaired shoes: " << st.size() << endl;
  134.    
  135.    
  136.     return st.size();
  137. }
  138.  
  139. int main()
  140. {
  141.     int n;
  142.     cout << "Input number of shoes: ";
  143.     cin >> n;
  144.    
  145.     red Q;
  146.     Q.init();
  147.     for(int i = 0; i < n; i++) {
  148.         string shoe;
  149.         cin >> shoe;
  150.         Q.push(shoe);
  151.     }
  152.     get_number_of_unpaired_shoes(Q);
  153.    
  154.    
  155.     return 0;
  156.  
  157. }
  158.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement