Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct deque1
- {
- int s=4;
- 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-1;i>=indexlast+(s/2);i--)
- {
- arr2[i]=arr1[i+s/2];
- }
- indexlast += 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;
- }
- if (index1st<0)
- {
- index1st+=(s-1);
- }
- currentsize--;
- index1st--;
- return arr1[index1st];
- }
- int popback()
- {
- if ((currentsize<=0))
- {
- return -1;
- }
- if (indexlast>=s)
- {
- indexlast-=(s-1);
- }
- currentsize--;
- indexlast++;
- return arr1[indexlast];
- }
- };
- int main()
- {
- int n;
- cin>>n;
- deque1 deque2;
- int command,number;
- int result;
- for (int i=0;i<n;i++)
- {cin>>command>>number;
- if (command==1)
- {
- deque2.pushfront(number);
- }
- if (command==2)
- {
- if (deque2.popfront()!= number)
- {cout<<"NO";
- break;}
- }
- if (command==3)
- {
- deque2.pushback(number);
- }
- if (command==4)
- {
- if (deque2.popback()!=number)
- {cout<<"NO";
- break;}}
- if (i==n-1)
- {
- cout<<"YES";
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement