Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- int input[1001] = {0}, output[1001] = {0}, stack[1001] = {0};
- int top = -1;
- static inline void StackPush(int data, int n){
- if(++top >= n) return;
- stack[top] = data;
- }
- static inline void StackPop(){
- if(top <= -1) return;
- top--;
- }
- static inline int StackEmpty(){
- return top <= -1 ? 1 : 0;
- }
- static inline int StackFull(int n){
- return top >= n - 1 ? 1 : 0;
- }
- int main(){
- while(1){
- int n;
- scanf("%d", &n);
- if(n == 0) break;
- while(1){
- for(int i = 0; i < n; i++){
- scanf("%d", output + i);
- if(output[0] == 0) break;
- input[i] = i + 1;
- }
- if(output[0] == 0) {
- puts("");
- break;
- }
- int i = 0, j = 0;//i for input, j for output
- while(j < n){
- if(input[i] == output[j]){
- //puts("11111");
- i++;
- j++;
- }
- else if(!StackEmpty() && stack[top] == output[j]){
- //puts("22222");
- StackPop();
- j++;
- }
- else if(i < n){
- //puts("33333");
- StackPush(input[i], n);
- i++;
- }
- else {
- //puts("44444");
- break;
- }
- }
- if(j < n - 1) puts("No");
- else puts("Yes");
- memset(input, 0, sizeof(input));
- memset(output, 0, sizeof(output));
- memset(stack, 0, sizeof(stack));
- top = -1;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement