求调
#include<bits/stdc++.h>
using namespace std;
char que[100005][15];
int state[100005];
int quea[100005];//后
int queb[100005];//前
char instra[100];
char instrb[15];
int n;
int m1=0;
char start[10]={'s','t','a','r','t'};
char arrive[10]={'a','r','r','i','v','e'};
char leave[10]={'l','e','a','v','e'};
bool find(char sa[])
{
for (int i=1;i<=m1;i++)
{
if (strcmp(sa,que[i])==0 && state[i] !=-1)
return true;
}
return false;
}
int find1 (char sa[])
{
for (int i=1;i<=m1;i++)
{
if (strcmp(sa,que[i])==0 && state[i]==0)
return i;
}
return -1;
}
int main()
{
memset(state,-1,sizeof(state));
quea[0]=1;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
scanf("%s",instra);
if (strcmp(start,instra)==0)
{
for (int i=1;i<=2;i++)
{
if (state[quea[0]]==1)
{
memcpy(que[++m1],que[quea[0]],sizeof(que[quea[0]]));
state[quea[0]]=-1;
quea[0]=quea[quea[0]];
if (state[m1-1]==-1) queb[m1]=queb[m1-1];
else queb[m1]=m1-1;
quea[queb[m1]]=m1;
state[m1]=0;
}
else
break;
}
if (state[quea[0]]==-1)
{
printf("Error\n");
}
else
{
state[quea[0]]=1;
printf("%s ",que[quea[0]]);
if (state[quea[quea[0]]]==0)
{
state[quea[quea[0]]]=1;
printf("%s",que[quea[quea[0]]]);
}printf("\n");
}
}
if (strcmp(arrive,instra)==0)
{
memset(instrb,'\0',sizeof(instrb));
scanf("%s",instrb);
if (find(instrb))
{
printf("Error\n");
}
else
{
memcpy(que[++m1],instrb,sizeof(instrb));
if (state[m1-1]==-1) queb[m1]=quea[m1-1];
else queb[m1]=m1-1;
quea[queb[m1]]=m1;
state[m1]=0;
printf("OK\n");
}
}
if (strcmp(leave,instra)==0)
{
memset(instrb,'\0',sizeof(instrb));
scanf("%s",instrb);
if (find1(instrb) >=0)
{
//printf(" %d ",find1(instrb));
int a=queb[find1(instrb)],b=quea[find1(instrb)];
state[find1(instrb)]=-1;
quea[a]=b;queb[b]=a;
printf("OK\n");
}
else
printf("Error\n");
}
//printf("%d:",quea[0]);
//for (int i=1;i<=m1;i++)
//{
// printf("%s %d ",que[i],state[i]);
//}printf("\n");
}
return 0;
}
好像大多数人都是这么写的