#include <iostream>
using namespace std;
long long n,m,k=0,f=0;
long long used=0;
string s[1050];
bool op(string a)
{
if (a[0]==a[5]&&a[1]==a[4]&&a[2]==a[3])
return true;
return false;
}
int main ()
{
cin >> n>>m;
for (int i = 1;i<=n;i++)
{
cin >> s[i];
}
for (int i = 1;i<=n;i++)
{
for (int j = 0;j<s[i].size();j++)
{
if (s[i][j]=='.')
k++;
if (s[i][j]=='X')
f++;
}
}
if(m==0)
{
bool flag=true;
for (int i = 1;i<=n;i++)
{
if(op(s[i]))
flag=true;
else
flag=false;
}
if(flag==true)
{
for (int i = 1;i<=n;i++)
{
cout << s[i]<<endl;
}
return 0;
}
else
{
cout << "Impossible"<<endl;
return 0;
}
}
if (k<m||(f+m)%2!=0)
{
cout << "Impossible"<<endl;
return 0;
}
for (int i = 1;i<=n;i++)
{
for (int j = 0;j<s[i].size();j++)
{
if(s[i][j]=='X')
{
if (m>used&&j==0&&s[i][5]=='.')
{
s[i][5]='X';
used++;
}
if (m>used&&j==1&&s[i][4]=='.')
{
s[i][4]='X';
used++;
}
if (m>used&&j==2&&s[i][3]=='.')
{
s[i][3]='X';
used++;
}
if (m>used&&j==3&&s[i][2]=='.')
{
s[i][2]='X';
used++;
}
if (m>used&&j==4&&s[i][1]=='.')
{
s[i][1]='X';
used++;
}
if (m>used&&j==5&&s[i][0]=='.')
{
s[i][0]='X';
used++;
}
}
}
}
if (used==m)
{
for (int i = 1;i<=n;i++)
{
cout << s[i]<<endl;
}
return 0;
}
else if(used<m)
{
for (int i = 1;i<=n;i++)
{
for (int j = 0;j<s[i].size();j++)
{
if(s[i][j]=='.')
{
if (m>used&&j==0&&s[i][5]=='.')
{
s[i][0]='X';
s[i][5]='X';
used+=2;
}
if (m>used&&j==1&&s[i][4]=='.')
{
s[i][1]='X';
s[i][4]='X';
used+=2;
}
if (m>used&&j==2&&s[i][3]=='.')
{
s[i][2]='X';
s[i][3]='X';
used+=2;
}
}
}
}
}
for (int i = 1;i<=n;i++)
{
cout << s[i]<<endl;
}
return 0;
}
已经调不动了,求dalao帮忙
记录