为什么会“read (ASCII 0)”
查看原帖
为什么会“read (ASCII 0)”
814852
YuYZ楼主2024/5/15 22:12

16分,AC on #16#18#19#20和subtask,其余全部WA

显示都是“Wrong Answer.wrong answer On line * column *, read (ASCII 0), expected *.” 下载数据本机测没问题。

下附代码,思路:四个指针分别记录左右栈头和栈尾下标

#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int n,a[N],ltop,lbot,rtop,rbot,pos,c;
char ans[N];
bool flag;
int main()
{
	int TTTTT;cin>>TTTTT;
	while(TTTTT--)
	{
		scanf("%d",&n);
		for(int i=1;i<=2*n;i++) scanf("%d",&a[i]);//-----------------------
		flag=true,ans[1]=ans[2*n]='L';pos=-1,c=1;
		for(int i=2;i<=2*n;i++) if(a[i]==a[1]) {pos=i;break;}
		if(pos==-1) {printf("-1\n");continue;}	
		ltop=2,lbot=pos-1,rtop=2*n,rbot=pos+1;
		//cout<<pos<<' '<<ltop<<' '<<lbot<<' '<<rtop<<' '<<rbot<<endl;
		while(1)
		{
			//cout<<ltop<<' '<<lbot<<' '<<rtop<<' '<<rbot<<endl;
			if(ltop<lbot&&a[ltop]==a[lbot])
				ltop++,lbot--,ans[++c]=ans[2*n-c+1]='L';
			else if(ltop<=lbot&&rtop>=rbot&&a[ltop]==a[rtop])
				ltop++,rtop--,ans[++c]='L',ans[2*n-c+1]='R';
			else if(ltop<=lbot&&rtop>=rbot&&a[ltop]==a[rbot])
				ltop++,rbot++,ans[++c]='L',ans[2*n-c+1]='R';
			else if(ltop<=lbot&&rtop>=rbot&&a[rtop]==a[lbot])
				rtop--,lbot--,ans[++c]='R',ans[2*n-c+1]='L';
			else if(rtop>rbot&&a[rtop]==a[rbot])
				rtop--,rbot++,ans[++c]=ans[2*n-c+1]='R';
			else
			{
				if(!(ltop>lbot&&rtop<rbot)) flag=false;
				break;
			}
		}
		if(flag)
		{
			for(int i=1;i<=2*n;i++) cout<<ans[i];
			cout<<endl;
			continue;
		}//-----------------------------------------------------------------
		//cout<<"$$$$$$$$$$$";
		flag=true,ans[1]='R',ans[2*n]='L';pos=-1,c=1;
		for(int i=1;i<2*n;i++) if(a[i]==a[2*n]) {pos=i;break;}
		if(pos==-1) {printf("-1\n");continue;}
		ltop=1,lbot=pos-1,rtop=2*n-1,rbot=pos+1;
		while(1)
		{
			//cout<<ltop<<' '<<lbot<<' '<<rtop<<' '<<rbot<<endl;
			if(ltop<lbot&&a[ltop]==a[lbot])
				ltop++,lbot--,ans[++c]=ans[2*n-c+1]='L';
			else if(ltop<=lbot&&rtop>=rbot&&a[ltop]==a[rtop])
				ltop++,rtop--,ans[++c]='L',ans[2*n-c+1]='R';
			else if(ltop<=lbot&&rtop>=rbot&&a[ltop]==a[rbot])
				ltop++,rbot++,ans[++c]='L',ans[2*n-c+1]='R';
			else if(ltop<=lbot&&rtop>=rbot&&a[rtop]==a[lbot])
				rtop--,lbot--,ans[++c]='R',ans[2*n-c+1]='L';
			else if(rtop>rbot&&a[rtop]==a[rbot])
				rtop--,rbot++,ans[++c]=ans[2*n-c+1]='R';
			else
			{
				if(!(ltop>lbot&&rtop<rbot)) flag=false;
				break;
			}
		}
		if(flag)
		{
			for(int i=1;i<=2*n;i++) cout<<ans[i];
			cout<<endl;
			continue;
		}
		printf("-1\n");
	}
	return 0;
}
2024/5/15 22:12
加载中...