Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct deque1
- {
- int s=128;
- int *arr1=new int[s];
- int index1st=0;
- int indexlast=s;
- int currentsize=0;
- void increasesize()
- {
- s*=2;
- int *arr2 = new int[s];
- for (int i = 0;i <= index1st;i++)
- {arr2[i]=arr1[i];}
- for (int i=s;i>=indexlast;i--)
- {
- arr2[i]=arr1[i+s/2];
- }
- arr2=arr1;
- delete[] arr1;
- }
- void pushback(int x)
- {
- currentsize++;
- if (currentsize>=s)
- {
- increasesize();
- }
- arr1[indexlast]=x;
- indexlast--;
- }
- void pushfront(int x)
- {
- currentsize++;
- if (currentsize>=s)
- {
- increasesize();
- }
- arr1[index1st]=x;
- index1st++;
- }
- int popfront()
- {
- if ((currentsize<=0))
- {
- return -1;
- }
- currentsize--;
- index1st--;
- return arr1[index1st];
- }
- int popback()
- {
- if ((currentsize<=0))
- {
- return -1;
- }
- currentsize--;
- indexlast++;
- return arr1[indexlast];
- }
- void multipop()
- {
- cout << '\n' << "Dequeue: ";
- for (int i = 0; i < currentsize; i++)
- {
- cout << arr1[(index1st + i)%s] << " ";
- }
- cout << '\n';
- }
- };
- int main()
- {
- int n;
- cin>>n;
- deque1 deque2;
- int Reading[2*n];
- int Results[n];
- for (int i=0;i<2*n;i++)
- {cin>>Reading[i];
- }
- for (int i=0;i<2*n;i++)
- {
- if (Reading[2*i]==1)
- {
- deque2.pushfront(Reading[2*n+1]);
- }
- if (Reading[2*i]==2)
- {
- if (deque2.popfront()!= Reading[2*i+1])
- {cout<<"NO";
- break;}
- }
- if (Reading[2*i]==3)
- {
- deque2.pushback(Reading[2*i+1]);
- }
- if (Reading[2*i]==4)
- {
- if (deque2.popback()!=Reading[2*i+1])
- {cout<<"NO";
- break;}
- }
- if (i==2*n-1)
- {
- cout<<"YES";
- }
- deque2.multipop();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement