Special Judge写完了
查看原帖
Special Judge写完了
101694
yummyeaten楼主2020/7/6 19:27

由于本人可能考虑不周,仅供参考。输出不应超过 114514114514 行,超过会导致下标越界。

如果对评测结果有异议,请在本帖at我反馈。P5918再等等。

@StudyingFather @mrsrz 希望采纳。

#include"testlib.h"
using namespace std;
string a[114514];
int n;
vector<int> tag;
int main(int argc,char** argv)
{
	registerTestlibCmd(argc,argv);
	n=inf.readInt();
	a[0]=ouf.readWord();
	for(int i=0;i<n;i++)
		if(a[0][i]!='o' || a[0][i+n]!='*')
			quitf(_wa,"Wrong on step 0");
	if(a[0][n*2]!='-' || a[0][n*2+1]!='-')
		quitf(_wa,"Wrong on step 0");
	for(int i=1;;i++)
	{
		tag.clear();
		a[i]=ouf.readWord();
		if(a[i].size()!=2*n+2)
			quitf(_wa,"Invalid string size line %d",i);
		for(int j=0;j<a[i].size();j++)
			if(a[i][j]!=a[i-1][j])
				tag.push_back(j);
		if(tag.size()!=4 || tag[2]-tag[1]==1 || tag[1]-tag[0]!=1 || tag[3]-tag[2]!=1)
			quitf(_wa,"Invalid move %d",i);
		if(a[i-1][tag[2]]=='-')
		{
			swap(tag[0],tag[2]);
			swap(tag[1],tag[3]);
		}
		if(a[i][tag[2]]!='-' || a[i][tag[3]]!='-')
			quitf(_wa,"Invalid move %d",i);
		if(a[i][tag[0]]!=a[i-1][tag[2]] || a[i][tag[1]]!=a[i-1][tag[3]])
			quitf(_wa,"Invalid move %d",i);
		bool flag=1;
		for(int j=2;j<2*n+2;j++)
			if((j&1) && a[i][j]!='*' || (j&1)==0 && a[i][j]!='o')
				flag=0;
		if(flag)
			quitf(_ok,"You finished it with %d steps!",i);
	}
	
    return 0;
}
2020/7/6 19:27
加载中...