Submission details
Task:Ruudukko
Sender:Gomhog
Submission time:2025-09-28 13:01:12 +0300
Language:C++ (C++11)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.00 sdetails

Code

#include <bits/stdc++.h>
#define F first
#define S second
#define X real()
#define Y imag()
using namespace std;
typedef long long ll;
typedef long double ld;

int ans[101][101];

void print_ans(int n, int m, bool flip) {
    if (flip) swap(n,m);
    for (int i=0;i<n;i++) {
        for (int j=0;j<m;j++) {
            if (flip) cout << ans[j][i] << " ";
            else cout << ans[i][j] << " ";
        }
        cout << "\n";
    }
}

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int tcs;
    cin >> tcs;
    for (int tc=0;tc<tcs;tc++) {
        int n,m;
        cin >> n >> m;
        bool flip=false;
        if (n>m) {
            flip = true;
            swap(n,m);
        }
        if (n==1) {
            if (m==1) cout << "YES\n1\n";
            else if (m<4) cout << "NO\n";
            else {
                cout << "YES\n";
                int j=0;
                for (int i=2*((m+1)/2)-1; i>0; i-=2) ans[0][j++]=i;
                for (int i=2*(m/2); i>0; i-=2) ans[0][j++]=i;
                print_ans(n,m,flip);
            }
        } else {
            if (n==2 && m==2) cout<<"NO\n";
            else {
                cout << "YES\n";
                for (int i=0; i<n; i++) {
                    for (int j=0; j<m; j++) {
                        ans[i][j] = (n*j + i*(n+1))%(n*m) + 1;
                    }
                }
                print_ans(n,m,flip);
            }
        }
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
100
1 1
1 2
2 1
1 3
...

correct output
YES
1
NO
NO
NO
...

user output
YES
1
NO
NO
NO
...