Submission #1229632

#TimeUsernameProblemLanguageResultExecution timeMemory
1229632acoatoitgsGardening (RMI21_gardening)C++20
0 / 100
9 ms836 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;

#define ll long long
#define pb push_back
#define m_pi 2 * acos(0.0)
#define all(a) (a).begin(), (a).end()
#define LL_INF 0x3f3f3f3f3f3f3f3f
#define INF 0x3f3f3f3f
void solve();

constexpr bool isTc = 1;
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    // freopen("input.txt", "r", stdin);
    // freopen("output.txt", "w", stdout);

    if (isTc)
    {
        int T;
        cin >> T;
        while (T--)
        {
            solve();
        }
    }
    else
        solve();
    return 0;
}

/*######################################*/

void solve()
{
    ll N, M, K;
    cin >> N >> M >> K;
    if(N%2 != 0 || M %2 != 0)
    {
        cout << "NO\n";
        return;
    }
    if(K == 1)
    {
        if(N != 2 || M != 2)
        {
            cout << "NO\n";
        }
        else
        {
            cout << "YES\n1 1\n1 1\n";
        }
        return;
    }
    if(K > N*M/4)
    {
        cout << "NO\n";
        return;
    }

    cout << "YES\n";
    vector<vector<ll>> mp(N, vector<ll>(M, -1));

    auto place = [&](ll x, ll y, ll val) -> void
    {
        mp[x*2][y*2] = val;
        mp[x*2+1][y*2] = val;
        mp[x*2][y*2+1] = val;
        mp[x*2+1][y*2+1] = val;
    };
    vector<pair<ll,ll>> li;
    ll cnt = 0;
    
    for(ll i = 0; i < N/2; i++)
    {
        for(ll k = 0; k < M/2; k++)
        {
            cnt++;
            place(i,k, ((i+k)%2)+1);
            if(cnt > 2)
                li.push_back({i, k});
        }
    }

    for(ll i = 3; i <= K; i++)
    {
        assert(!li.empty());
        place(li.back().first, li.back().second, i);
        li.pop_back();
    }

    for(auto &i : mp)
    {
        for(auto k : i) cout << k << " ";
        cout << "\n";
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...