- #include <stdio.h>
- #include <stack>
- using namespace std;
- int qin[100005];
- int qout[100005];
- int main(void)
- {
- int n;
- int i,j;
- while(scanf("%d", &n) == 1)
- {
- for(i=0; i<n; ++i)
- scanf("%d", &qin[i]);
- for(i=0; i<n; ++i)
- scanf("%d", &qout[i]);
- stack<int> s;
- i = 0;
- j = 0;
- while(i<n || j<n)
- {
- if(i<n && j<n && qin[i]==qout[j])
- {
- ++i;
- ++j;
- }
- else
- {
- if(s.empty())
- {
- if(i<n)
- s.push(qin[i++]);
- }
- else if(s.top() == qout[j])
- {
- s.pop();
- ++j;
- }
- else if(i<n)
- {
- s.push(qin[i++]);
- }
- else
- {
- break;
- }
- }
- }
- if(j==n)
- printf("Yes\\n");
- else
- printf("No\\n");
- }
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/050720134448.html
来源: http://www.codesnippet.cn/detail/050720134448.html