fork(2) download
  1. #include <iostream>
  2. using namespace std;
  3. struct stack{ //стек
  4. int truck[100];
  5. int length = 0;
  6. int pop (){return truck[--length];}
  7. void push (int x){truck[length++] = x;}
  8. int front () {return truck[length-1];}
  9. int size () {return length;}
  10. }car;
  11. int main() {
  12. int amount_n;
  13. cin >> amount_n; //Ввод (количество вагонов)
  14. int n;
  15. int count = 1;
  16. while (cin >> n){ //Цикл (для ввода нового вагона)
  17. car.push(n); //заводим в стек новый вагон
  18. if (n == count){count++; car.pop();} //проверяем, если вагон подходит, то выводим его на путь 2
  19. while (car.size() > 0){ //т.к. перед подходящим вагоном может стоять следующий подходящий вагон или несколько вагонов ,то пока стек не пуст будем проверять последние вагоны в стеке
  20. if (car.front() == count){count++; car.pop();} //если вагон подходит выводим на путь 2
  21. else break;
  22. }
  23. }
  24.  
  25. if (car.size() == 0) {cout << "YES" << endl;} //если стек пуст, то все вагоны были выведены на путь 2
  26. else cout << "NO" << endl;
  27.  
  28. return 0;
  29. }
Success #stdin #stdout 0s 3100KB
stdin
5
3 2 1 4 5
stdout
YES