Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- class q{
- public:
- int head;
- int tail;
- int buffer_size = 8;
- int size;
- int* buffer;
- q();
- ~q();
- void push(int elem);
- int pop();
- void resize(int new_size);
- };
- q::q(){
- head = 0;
- tail = 0;
- size = 0;
- buffer = new int[buffer_size];
- }
- q::~q(){
- delete[] buffer;
- }
- void q::push(int elem){
- if (size >= buffer_size)
- resize(buffer_size*2);
- buffer[tail%buffer_size] = elem;
- size++;
- tail++;
- }
- int q::pop(){
- if (size>0)
- return buffer[head++%buffer_size];
- else
- return -1;
- }
- void q::resize(int new_size){
- int* tmp = new int[new_size];
- for (int i = 0; i < size; i++)
- tmp[i] = buffer[(head+i)%buffer_size];
- tail = size;
- head = 0;
- buffer_size = new_size;
- buffer = tmp;
- }
- int main() {
- q queue;
- int n;
- cin >> n;
- bool is_correct = true;
- for (int i = 0; i < n; i++){
- int a;
- cin >> a;
- if (a==2){
- int awaited_value;
- cin >> awaited_value;
- if (queue.pop() != awaited_value)
- is_correct = false;
- }
- else{
- int value;
- cin >> value;
- queue.push(value);
- }
- }
- if (is_correct)
- cout << "YES" << endl;
- else
- cout << "NO" << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement