fork download
  1. #include <stdio.h> // по какой-то причине e-olimp, не хотел видеть getchar
  2. #include <iostream>
  3. #include <vector>
  4. #include <cstring>
  5. #include <sstream>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10. int n; // Количество вагонов в поезде
  11. int number; // отвечает за нумерацию вагонов
  12. stringstream stream_my; // принимает поезд из потока ввода, и выдает под одному вагону
  13. while( (cin >> n, getchar(), n != 0) ){ // Считываем количество вагонов
  14. string s; // Перед тем как кинуть в поток, мы сохраняем вагон в строке
  15. getline(cin, s, '\n');
  16. while(s != "0"){
  17. vector<int> stalemate;
  18. stream_my.str("");
  19. stream_my.clear(); // очищаем поток и збрасываем флаги
  20. stream_my << s;
  21. stream_my >> number; // мы должны считывать number, а закидывать -- i
  22. for( int i=1 ; i<=n ; i++ ){ //
  23. stalemate.push_back(i); // кидаем в тупик вагоны по порядку, пока не будет найден number
  24. while(!stalemate.empty() && number == stalemate.back()){ // пока в тупике вагоны идут по порядку вывозим их от туда
  25. stalemate.pop_back();
  26. stream_my >> number;
  27. }
  28. }
  29. cout << (stalemate.empty()? "Yes" : "No") << endl; // Если нам что-то помешало вывезти все вагоны из тупика, то ответ No
  30. getline(cin, s, '\n');
  31. }
  32. cout << endl;
  33. }
  34.  
  35. }
Success #stdin #stdout 0s 3236KB
stdin
5
1 2 3 4 5
5 4 1 2 3
2 4 5 3 1
0
6
6 5 4 3 2 1
0
0
stdout
Yes
No
Yes

Yes