Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. struct deque1
  5. {
  6. int s=128;
  7. int *arr1=new int[s];
  8.  
  9. int index1st=0;
  10. int indexlast=s;
  11. int currentsize=0;
  12.  
  13. void increasesize()
  14. {
  15. s*=2;
  16. int *arr2 = new int[s];
  17. for (int i = 0;i <= index1st;i++)
  18. {arr2[i]=arr1[i];}
  19. for (int i=s;i>=indexlast;i--)
  20. {
  21. arr2[i]=arr1[i+s/2];
  22. }
  23. arr2=arr1;
  24. delete[] arr1;
  25.  
  26. }
  27. void pushback(int x)
  28. {
  29.  
  30. currentsize++;
  31. if (currentsize>=s)
  32. {
  33. increasesize();
  34. }
  35. arr1[indexlast]=x;
  36. indexlast--;
  37.  
  38.  
  39. }
  40. void pushfront(int x)
  41. {
  42. currentsize++;
  43. if (currentsize>=s)
  44. {
  45. increasesize();
  46. }
  47.  
  48. arr1[index1st]=x;
  49. index1st++;
  50.  
  51. }
  52. int popfront()
  53. {
  54. if ((currentsize<=0))
  55. {
  56. return -1;
  57. }
  58. currentsize--;
  59. index1st--;
  60. return arr1[index1st];
  61. }
  62. int popback()
  63. {
  64. if ((currentsize<=0))
  65. {
  66. return -1;
  67. }
  68. currentsize--;
  69. indexlast++;
  70. return arr1[indexlast];
  71.  
  72. }
  73. void multipop()
  74. {
  75. cout << '\n' << "Dequeue: ";
  76. for (int i = 0; i < currentsize; i++)
  77. {
  78. cout << arr1[(index1st + i)%s] << " ";
  79. }
  80. cout << '\n';
  81. }
  82. };
  83.  
  84. int main()
  85. {
  86. int n;
  87. cin>>n;
  88. deque1 deque2;
  89. int Reading[2*n];
  90. int Results[n];
  91. for (int i=0;i<2*n;i++)
  92. {cin>>Reading[i];
  93. }
  94. for (int i=0;i<2*n;i++)
  95. {
  96. if (Reading[2*i]==1)
  97. {
  98. deque2.pushfront(Reading[2*n+1]);
  99. }
  100. if (Reading[2*i]==2)
  101. {
  102. if (deque2.popfront()!= Reading[2*i+1])
  103. {cout<<"NO";
  104. break;}
  105.  
  106. }
  107. if (Reading[2*i]==3)
  108. {
  109. deque2.pushback(Reading[2*i+1]);
  110. }
  111. if (Reading[2*i]==4)
  112. {
  113. if (deque2.popback()!=Reading[2*i+1])
  114. {cout<<"NO";
  115. break;}
  116.  
  117. }
  118. if (i==2*n-1)
  119. {
  120. cout<<"YES";
  121. }
  122. deque2.multipop();
  123.  
  124. }
  125.  
  126.  
  127. return 0;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement