T3 40pts链表TLE 赏关
  • 板块灌水区
  • 楼主H_ice
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/8/12 18:10
  • 上次更新2023/11/3 04:14:37
查看原帖
T3 40pts链表TLE 赏关
947518
H_ice楼主2023/8/12 18:10

求调

#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;
}

好像大多数人都是这么写的

2023/8/12 18:10
加载中...