#include <bits/stdc++.h>
using namespace std;
#define sz(x) (int)x.size()
#define all(x) x.begin() , x.end()
void solve(){
int n,m,k;
cin >> n >> m >> k;
if(n%2 or m%2 or n*m < 4*k or k < max(n,m) / 2){
cout << "NO" << endl;
return;
}
vector<vector<int>>grid(n,vector<int>(m,-1));
vector<pair<int,int>>rectangle;
// kac tane kaplama olcak
int kap = 0 , curk = n*m/4;
for(int i = 1;i<=min(n,m)/2;i++){
int hi = (n-2*i) * (m-2*i) / 4 + i;
if(k > hi){
kap = i-1;
break;
}
else{
rectangle.push_back({n-2*(i-1) , m-2*(i-1)});
curk = hi;
}
}
int sayac = 1;
// fuck this case
if(k == curk-1){
if(kap == 0){
cout << "NO" << endl;
return;
}
else{
rectangle.pop_back();
kap--;
curk = (n-2*kap) * (m-2*kap) / 4 + kap;
if(n-2*kap >= 6 and m-2*kap >= 8){
// cout << "FLAG 1" << endl;
rectangle.push_back({n-2*kap,m-2*kap - 4});
for(int x = kap;x<=kap+5;x++){
grid[x][m-kap-4] = sayac;
grid[x][m-kap-1] = sayac;
}
for(int y = m-kap-4;y<=m-kap-1;y++){
grid[kap][y] = sayac;
grid[kap+5][y] = sayac;
}
sayac++;
}
else if(n-2*kap >= 8 and m-2*kap >= 6){
// cout << "FLAG 2" << endl;
rectangle.push_back({n-2*kap - 4,m-2*kap});
for(int y = kap;y<=kap+5;y++){
grid[n-kap-4][y] = sayac;
grid[n-kap-1][y] = sayac;
}
for(int x = n-kap-4;x<=n-kap-1;x++){
grid[x][kap] = sayac;
grid[x][kap+5] = sayac;
}
sayac++;
}
else{
cout << "NO" << endl;
return;
}
}
}
else{
if(k != curk){
int x=4,y=4;
curk -= 2;
for(int xi = 6;xi <= n-2*kap;xi+=2){
if(k == curk)break;
else{
x = xi;
curk--;
}
}
// rectangle y boyu ne olacak
for(int yi = 6;yi <= m-2*kap;yi+=2){
if(k == curk)break;
else{
y = yi;
curk--;
}
}
rectangle.push_back({x,y});
}
}
// rectanglelari koy
for(int ind = 0;ind<sz(rectangle);ind++){
auto r = rectangle[ind];
for(int x = ind;x < ind + r.first;x++){
grid[x][ind] = sayac;
grid[x][ind + r.second - 1] = sayac;
}
for(int y = ind;y < ind + r.second;y++){
grid[ind][y] = sayac;
grid[ind + r.first - 1][y] = sayac;
}
sayac++;
}
// bosluk doldur
for(int i = 0;i<n-1;i++){
for(int j = 0;j<m-1;j++){
if(grid[i][j] == -1 and grid[i+1][j] == -1 and grid[i][j+1] == -1 and grid[i+1][j+1] == -1){
grid[i][j] = grid[i+1][j] = grid[i][j+1] = grid[i+1][j+1] = sayac;
sayac++;
}
}
}
// yazdir
cout << "YES" << endl;
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
cout << grid[i][j] << " ";
}
cout << endl;
}
}
signed main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int testcase=1;cin >> testcase;
while(testcase--)solve();
cerr << 1000.0 * clock() / CLOCKS_PER_SEC << " ms" << endl;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |