Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
202
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.83 KB | None | 0 0
  1. #include<stdlib.h>
  2. #include<stdio.h>
  3. #include<string.h>
  4.  
  5. int input[1001] = {0}, output[1001] = {0}, stack[1001] = {0};
  6. int top = -1;
  7.  
  8. static inline void StackPush(int data, int n){
  9. if(++top >= n) return;
  10. stack[top] = data;
  11. }
  12.  
  13. static inline void StackPop(){
  14. if(top <= -1) return;
  15. top--;
  16. }
  17.  
  18. static inline int StackEmpty(){
  19. return top <= -1 ? 1 : 0;
  20. }
  21.  
  22. static inline int StackFull(int n){
  23. return top >= n - 1 ? 1 : 0;
  24. }
  25.  
  26. int main(){
  27.  
  28. while(1){
  29. int n;
  30. scanf("%d", &n);
  31. if(n == 0) break;
  32. while(1){
  33. for(int i = 0; i < n; i++){
  34. scanf("%d", output + i);
  35. if(output[0] == 0) break;
  36. input[i] = i + 1;
  37. }
  38. if(output[0] == 0) {
  39. puts("");
  40. break;
  41. }
  42. int i = 0, j = 0;//i for input, j for output
  43. while(j < n){
  44.  
  45. if(input[i] == output[j]){
  46. //puts("11111");
  47. i++;
  48. j++;
  49. }
  50. else if(!StackEmpty() && stack[top] == output[j]){
  51. //puts("22222");
  52. StackPop();
  53. j++;
  54. }
  55. else if(i < n){
  56. //puts("33333");
  57. StackPush(input[i], n);
  58. i++;
  59. }
  60. else {
  61. //puts("44444");
  62. break;
  63. }
  64. }
  65.  
  66. if(j < n - 1) puts("No");
  67. else puts("Yes");
  68.  
  69. memset(input, 0, sizeof(input));
  70. memset(output, 0, sizeof(output));
  71. memset(stack, 0, sizeof(stack));
  72. top = -1;
  73. }
  74. }
  75. return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement