Advertisement
FreakSkipper

Rails

Sep 1st, 2020 (edited)
1,525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.09 KB | None | 0 0
  1. // URI 1062 - Rails
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. int main() {
  7.     int n;
  8.  
  9.     do {
  10.         cin >> n;
  11.  
  12.         if (n == 0) break;
  13.  
  14.         bool insert_line = true;
  15.         do {
  16.             vector<int> v_in;
  17.             queue<int> request;
  18.             stack<int> station;
  19.            
  20.             for (int i = 0; i < n; i++) {
  21.                 v_in.push_back(n - i);
  22.                 int aux;
  23.                 cin >> aux;
  24.                 request.push(aux);
  25.  
  26.                 if (aux == 0) {
  27.                     insert_line = false;
  28.                     break;
  29.                 }
  30.             }
  31.  
  32.             if (insert_line) {
  33.                 while (!request.empty()) {
  34.                     if (!v_in.empty()) {  // tem vagões chegando
  35.                         if (v_in.back() == request.front()) {
  36.                             request.pop();
  37.                             v_in.erase(v_in.end() - 1);
  38.                         } else {
  39.                             if (!station.empty() && station.top() == request.front()) {
  40.                                 request.pop();
  41.                                 station.pop();
  42.                                 // station.push(v_in.back() - 1);
  43.                             } else {
  44.                                 station.push(v_in.back());
  45.                                 v_in.erase(v_in.end() - 1);
  46.                             }
  47.                         }
  48.                     } else {
  49.                         // Não é para acontecer da station ficar vazia antes de completar
  50.                         if (!station.empty() && station.top() == request.front()) {
  51.                             station.pop();
  52.                             request.pop();
  53.                         } else {
  54.                             break;
  55.                         }
  56.                     }
  57.                 }
  58.                 if (request.empty())
  59.                     cout << "Yes" << endl;
  60.                 else
  61.                     cout << "No" << endl;
  62.             }
  63.         } while (insert_line);
  64.         cout << '\n';
  65.     } while (true);
  66.  
  67.     return 0;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement