除了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;
}