Submission #257116

#TimeUsernameProblemLanguageResultExecution timeMemory
257116BTheroRed-blue table (IZhO19_stones)C++17
100 / 100
19 ms10240 KiB
// chrono::system_clock::now().time_since_epoch().count()
#include<bits/stdc++.h>

#define pb push_back
#define eb emplace_back
#define mp make_pair
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define debug(x) cerr << #x << " = " << x << endl;

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<vi> vvi;

const int MAXN = (int)1e3 + 5;
const int INF = (int)1e9;

char s[MAXN][MAXN];
int cnt[MAXN];
int n, m;
pii ans;

int calc(int n, int m, vvi &ret) {
  ans = mp(m, 0);
  
  for (int i = 0; i < m; ++i) {
    cnt[i] = n;
  }
  
  for (int step = 1, ptr = 0, col = m; step <= n; ++step) {
    for (int i = 1; i <= m / 2 + 1; ++i) {
      if (--cnt[ptr] <= n / 2) {
        --col;
      }
      
      ptr = (ptr + 1) % m;
    }
    
    ans = max(ans, mp(step + col, step));
  } 
  
  ret = vvi(n, vi(m, 0));
  
  for (int step = 1, ptr = 0; step <= ans.se; ++step) {
    for (int i = 1; i <= m / 2 + 1; ++i) {
      ret[step - 1][ptr] = 1;
      ptr = (ptr + 1) % m;
    }
  }
  
  return ans.fi;
}

void solve() {
  scanf("%d %d", &n, &m);
  vvi Av, Bv;
  int A, B;
  A = calc(n, m, Av);
  B = calc(m, n, Bv);
  
  if (A >= B) {
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < m; ++j) {
        s[i][j] = (Av[i][j] ? '+' : '-');
      }
      
      s[i][m] = '\0';
    }
  }
  else {
    for (int i = 0; i < n; ++i) {
      for (int j = 0; j < m; ++j) {
        s[i][j] = (Bv[j][i] ? '-' : '+');
      }
      
      s[i][m] = '\0';
    }
  }
  
  printf("%d\n", max(A, B));
  
  for (int i = 0; i < n; ++i) {
    printf("%s\n", s[i]);
  }
}

int main() {
  int tt;
  scanf("%d", &tt);
  
  while (tt--) {
    solve();
  }

  return 0;
}

Compilation message (stderr)

stones.cpp: In function 'void solve()':
stones.cpp:59:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d", &n, &m);
   ~~~~~^~~~~~~~~~~~~~~~~
stones.cpp: In function 'int main()':
stones.cpp:93:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &tt);
   ~~~~~^~~~~~~~~~~
#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...