Submission #1131932

#TimeUsernameProblemLanguageResultExecution timeMemory
1131932JelalTkmRed-blue table (IZhO19_stones)C++20
27 / 100
15 ms1804 KiB
#include <bits/stdc++.h>
#pragma GCC optimize ("O3")
#pragma GCC target ("sse4")

using namespace std;

#define int long long int

const int N = 3e5 + 10;
const int md = 1e9 + 7;
const int INF = 1e9;

int32_t main(int32_t argc, char *argv[]) {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  
  int T = 1;
  cin >> T;
  while (T--) {
    int n, m;
    cin >> n >> m;
    if (n < m) {
      vector<vector<int>> a(n + 1, vector<int> (m + 1));
      for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
          a[i][j] = 0;

      vector<int> st(n + 1);

      for (int j = 1; j <= m; j++) {
        int cnt = 0;
        for (int i = 1; i <= n && (cnt + 1) < (n - (cnt + 1)) && st[i] <= (m - st[i]); i++) {
          a[i][j] = 1;
          cnt++;
          st[i]++;
        }
      }

      int ans = 0;
      for (int i = 1; i <= n; i++) {
        int cnt = 0;
        for (int j = 1; j <= m; j++) {
          cnt += a[i][j];
        }
        if (cnt > (m - cnt))
          ans++;
      }
      for (int j = 1; j <= m; j++) {
        int cnt = 0;
        for (int i = 1; i <= n; i++) {
          cnt += !(a[i][j]);
        }
        if (cnt > (n - cnt))
          ans++;
      }

      cout << ans << '\n';
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++)
          cout << (a[i][j] == 1 ? '+' : '-');
        cout << '\n';
      }
    } else {
      vector<vector<int>> a(n + 1, vector<int> (m + 1));
      for (int i = 1; i <= n; i++)
        for (int j = 1; j <= m; j++)
          a[i][j] = 1;

      vector<int> st(m + 1);

      for (int i = 1; i <= n; i++) {
        int cnt = 0;
        for (int j = 1; j <= m && (cnt + 1) < (m - (cnt + 1)) && st[j] <= (n - st[j]); j++) {
          a[i][j] = 0;
          cnt++;
          st[j]++;
        }
      }

      int ans = 0;
      for (int i = 1; i <= n; i++) {
        int cnt = 0;
        for (int j = 1; j <= m; j++) {
          cnt += a[i][j];
        }
        if (cnt > (m - cnt))
          ans++;
      }
      for (int j = 1; j <= m; j++) {
        int cnt = 0;
        for (int i = 1; i <= n; i++) {
          cnt += !(a[i][j]);
        }
        if (cnt > (n - cnt))
          ans++;
      }

      cout << ans << '\n';
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++)
          cout << (a[i][j] == 1 ? '+' : '-');
        cout << '\n';
      }
    }
  }

  return 0;
}
#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...