Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define fi first
- #define se second
- #define pb push_back
- #define all(x) x.begin(),x.end()
- #define rall(x) x.rbegin(),x.rend()
- using namespace std;
- using ii = pair<int, int>;
- using i64 = long long;
- const int INF = 0x3f3f3f3f;
- const i64 INFLL = 0x3f3f3f3f3f3f3f3f;
- int main() {
- cin.tie(0)->sync_with_stdio(0);
- int n, m; cin >> n >> m;
- int a = n, b = m;
- int SZ = max(a, b);
- if (n > m) swap(n, m);
- vector<vector<int>> ans(SZ, vector<int>(SZ, 0));
- int cur = 1;
- int i = 0;
- while (i + 5 - 1 < n) {
- for (int j = 0; j < m; ++j) {
- ans[i][j] = ans[i+1][j] = cur++;
- ans[i+3][j] = ans[i+4][j] = cur++;
- }
- i += 5;
- }
- int rem = n - i;
- if (rem == 1) {
- int j = 0;
- while (j + 1 < m) {
- ans[i][j] = ans[i][j+1] = cur++;
- j += 2;
- }
- } else if (rem == 2) {
- int j = 0;
- while (j < m) {
- ans[i][j] = ans[i+1][j] = cur++;
- j += 1;
- }
- } else if (rem == 3) {
- int j = 0;
- while (j + 5 - 1 < m) {
- ans[i+0][j+0] = ans[i+0][j+1] = cur++;
- ans[i+0][j+3] = ans[i+0][j+4] = cur++;
- ans[i+1][j+0] = ans[i+1][j+1] = cur++;
- ans[i+1][j+3] = ans[i+1][j+4] = cur++;
- ans[i+2][j+0] = ans[i+2][j+1] = cur++;
- ans[i+2][j+3] = ans[i+2][j+4] = cur++;
- j += 5;
- }
- int rr = m - j;
- if (rr == 1) {
- ans[i][j] = ans[i+1][j] = cur++;
- ans[i+2][j-3] = ans[i+2][j-2] = cur++;
- ans[i+2][j-1] = ans[i+2][j] = cur++;
- } else if (rr == 2) {
- ans[i][j] = ans[i][j+1] = cur++;
- ans[i+1][j] = ans[i+1][j+1] = cur++;
- ans[i+2][j] = ans[i+2][j+1] = cur++;
- } else if (rr == 3) {
- ans[i][j] = ans[i][j+1] = cur++;
- ans[i][j+2] = ans[i+1][j+2] = cur++;
- ans[i+1][j] = ans[i+2][j] = cur++;
- ans[i+2][j+1] = ans[i+2][j+2] = cur++;
- } else if (rr == 4) {
- ans[i][j] = ans[i][j+1] = cur++;
- ans[i][j+2] = ans[i+1][j+2] = cur++;
- ans[i+1][j] = ans[i+2][j] = cur++;
- ans[i+2][j+1] = ans[i+2][j+2] = cur++;
- ans[i+1][j+3] = ans[i+2][j+3] = cur++;
- }
- } else if (rem == 4) {
- int j = 0;
- while (j + 5 - 1 < m) {
- ans[i+0][j+0] = ans[i+0][j+1] = cur++;
- ans[i+0][j+3] = ans[i+0][j+4] = cur++;
- ans[i+1][j+0] = ans[i+1][j+1] = cur++;
- ans[i+1][j+3] = ans[i+1][j+4] = cur++;
- ans[i+2][j+0] = ans[i+2][j+1] = cur++;
- ans[i+2][j+3] = ans[i+2][j+4] = cur++;
- ans[i+3][j+0] = ans[i+3][j+1] = cur++;
- ans[i+3][j+3] = ans[i+3][j+4] = cur++;
- j += 5;
- }
- int rr = m - j;
- if (rr == 1) {
- for (int k = i; k < n; k += 2) {
- ans[k][j] = ans[k+1][j] = cur++;
- }
- } else if (rr == 2) {
- for (int k = i; k < n; k++) {
- ans[k][j] = ans[k][j+1] = cur++;
- }
- } else if (rr == 3) {
- ans[i][j+1] = ans[i+1][j+1] = cur++;
- ans[i][j+2] = ans[i+1][j+2] = cur++;
- ans[i+2][j+1] = ans[i+3][j+1] = cur++;
- ans[i+2][j+2] = ans[i+3][j+2] = cur++;
- ans[i+1][j] = ans[i+2][j] = cur++;
- } else if (rr == 4) {
- ans[i][j+1] = ans[i][j+2] = cur++;
- ans[i+1][j] = ans[i+1][j+1] = cur++;
- ans[i+1][j+2] = ans[i+1][j+3] = cur++;
- ans[i+2][j] = ans[i+3][j] = cur++;
- ans[i+2][j+1] = ans[i+3][j+1] = cur++;
- ans[i+2][j+2] = ans[i+3][j+2] = cur++;
- ans[i+2][j+3] = ans[i+3][j+3] = cur++;
- }
- }
- vector<vector<int>> aux(SZ, vector<int>(SZ, 0));
- if (a > b) {
- for (int i = 0; i < n; ++i) {
- for (int j = 0; j < m; ++j) {
- int I = m - j - 1;
- int J = i;
- aux[I][J] = ans[i][j];
- }
- }
- ans = aux;
- }
- for (int i = 0; i < a; ++i) {
- for (int j = 0; j < b; ++j) {
- cout << ans[i][j] << ' ';
- }
- cout << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment