Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.46 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. class q{
  7. public:
  8. int head;
  9. int tail;
  10. int buffer_size = 8;
  11. int size;
  12. int* buffer;
  13.  
  14. q();
  15. ~q();
  16. void push(int elem);
  17. int pop();
  18. void resize(int new_size);
  19. };
  20.  
  21. q::q(){
  22. head = 0;
  23. tail = 0;
  24. size = 0;
  25. buffer = new int[buffer_size];
  26. }
  27.  
  28. q::~q(){
  29. delete[] buffer;
  30. }
  31.  
  32. void q::push(int elem){
  33. if (size >= buffer_size)
  34. resize(buffer_size*2);
  35. buffer[tail%buffer_size] = elem;
  36. size++;
  37. tail++;
  38. }
  39.  
  40. int q::pop(){
  41. if (size>0)
  42. return buffer[head++%buffer_size];
  43. else
  44. return -1;
  45. }
  46.  
  47. void q::resize(int new_size){
  48. int* tmp = new int[new_size];
  49. for (int i = 0; i < size; i++)
  50. tmp[i] = buffer[(head+i)%buffer_size];
  51. tail = size;
  52. head = 0;
  53. buffer_size = new_size;
  54. buffer = tmp;
  55. }
  56.  
  57.  
  58.  
  59. int main() {
  60. q queue;
  61. int n;
  62. cin >> n;
  63.  
  64. bool is_correct = true;
  65. for (int i = 0; i < n; i++){
  66. int a;
  67. cin >> a;
  68. if (a==2){
  69. int awaited_value;
  70. cin >> awaited_value;
  71. if (queue.pop() != awaited_value)
  72. is_correct = false;
  73. }
  74. else{
  75. int value;
  76. cin >> value;
  77. queue.push(value);
  78. }
  79. }
  80.  
  81. if (is_correct)
  82. cout << "YES" << endl;
  83. else
  84. cout << "NO" << endl;
  85. return 0;
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement