题目
#include<bits/stdc++.h>
using namespace std;
char Map[2003][2003];
int line[2003],column[2003];
int main() {
int t;
scanf("%d",&t);
while(t--) {
int n,m,k;
int sum=0;
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
Map[i][j]='.';
line[i]=0;
column[j]=0;
}
}
if(k==0) {
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
printf("%c",Map[i][j]);
}
printf("\n");
}
continue;
}
if(k<=min(n,m)) {
for(int i=1;i<=min(n,m);i++) {
Map[i][i]='S';
sum++;
if(sum==k) break;
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
printf("%c",Map[i][j]);
}
printf("\n");
}
continue;
}
if(k>min(n,m)) {
for(int i=1;i<=min(n,m);i++) {
Map[i][i]='S';
column[i]++;
line[i]++;
sum++;
}
for(int i=min(n,m)+1;i<=k;i++) {
int minn=1e9;
int minn1=1e9;
int nowx=0,nowy=0;
for(int j=1;j<=n;j++) {
if(minn>line[j]) minn=line[j],nowx=j;
}
for(int j=1;j<=m;j++) {
if(minn1>column[j]&&Map[nowx][j]=='.') minn1=column[j],nowy=j;
}
line[nowx]++;
column[nowy]++;
Map[nowx][nowy]='S';
}
for(int i=1;i<=n;i++) {
for(int j=1;j<=m;j++) {
printf("%c",Map[i][j]);
}
printf("\n");
}
continue;
}
}
return 0;
}