PAT A 1051

来源:互联网 发布:淘宝冲印照片哪家好 编辑:程序博客网 时间:2024/05/01 04:21
#include <stdio.h>
#include <malloc.h>
typedef struct
{
int a[100100];
int top;
}*Stack,SeqStack;
int arr[10010];
Stack init()
{
Stack ps=(Stack)malloc(sizeof(SeqStack));
if(ps==NULL)
return NULL;
else
{
ps->top=-1;
return ps;
}
}
int empty(Stack ps)//我们来判断是栈空了
{
if(ps->top==-1)
return 0;
else
return 1;
}
void pop(Stack ps)
{
if(empty(ps)==1)
ps->top--;
else
return ;
}
void push(Stack ps,int val)
{
ps->top++;
ps->a[ps->top]=val;


}
void clear(Stack ps)
{
ps->top=-1; 


}
int gettop(Stack ps)
{
if(empty(ps)==1)
return ps->a[ps->top];
else
return 0;


}
int size(Stack ps)
{
return ps->top+1;
}
int main()
{
Stack ps;
int i,n,m,T,current,flag;
ps=init();
scanf("%d %d %d",&m,&n,&T);
while(T--)
{
while(empty(ps)==1)//清空栈
pop(ps);
for(i=1;i<=n;i++)
scanf("%d",&arr[i]);
current=1;
flag=0;
for(i=1;i<=n;i++)
{
push(ps,i);
if(size(ps)>m)
{
flag=1;
break;
}

while(empty(ps)==1&&gettop(ps)==arr[current])
{
current++;
pop(ps);

}
}
if(empty(ps)==0&&flag==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
0 0