0分求助
查看原帖
0分求助
1101744
xingshuyan000楼主2024/9/30 23:19

除了Subtask0以外,其余每个Subtask都有若干个测试点答案错误,具体的是第7、12、18、21(S1),26、30(S2),37、44、50(S3),54、62(S4),75、77、79、91、96(S5)号测试点。求助,谢谢!

#include<bits/stdc++.h>
using namespace std;
char ch[1500][15];
int main()
{
	int n,m;
	cin>>n>>m;
	int mmax=0,mmin=0;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=6;j++)
		{
			cin>>ch[i][j];
			if(ch[i][j]=='.')mmax++;
		}
	}
	if(m>mmax){
		cout<<"Impossible";
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=4;j<=6;j++)
		{
			if(ch[i][j]!=ch[i][7-j]){//如果对称的两个位置一个有人一个没人 
				mmin++;
				ch[i][j] = ch[i][7-j] = 'X';
			}
		}
	}
	if(m<mmin){
		cout<<"Impossible";
		return 0;
	}
	m-=mmin;
	if(m%2==1){
		cout<<"Impossible";
		return 0;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=3;j++)
		{
			if(ch[i][j]=='.'){ch[i][j]='X',ch[i][7-j]='X';m-=2;}//如果这个位置是空的 
			if(m<=0)break;
		}
		if(m<=0)break;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=6;j++)
			cout<<ch[i][j];
		cout<<endl;
	}
	return 0;
}
2024/9/30 23:19
加载中...