답안 #156023

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
156023 2019-10-02T15:40:21 Z ASDF123 Red-blue table (IZhO19_stones) C++14
27 / 100
48 ms 1304 KB
#include <bits/stdc++.h>
//#define int long long
#define fr first
#define sc second
#define all(s) s.begin(), s.end()
#define szof(s) (int)s.size()
using namespace std;

const int N = (int)1e5 + 5;
const int INF = 0x3f3f3f3f;
const int MOD = (int)1e9 + 9;

int tests = 1;

void solve() {
  int n, m, ans = 0;
  cin >> n >> m;
  char c[n + 2][m + 2];
  vector <int> col(m + 2, 0);
  vector <int> row(n + 2, 0);

  if (m > n) {
    for (int j = 1; j <= m; j++) {
      col[j] = n;
    }
    memset(c, '-', sizeof c);
    // want ++-
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (col[j] - 1 > n - (col[j] - 1)) {
          int ii = i, jj = j;
          while (row[ii] <= m - row[ii] && (col[jj] - 1 > n - (col[jj] - 1))) {
            col[jj]--;
            row[ii]++;
            c[ii][jj] = '+';
            jj++;
          }
        }
      }
    }
  }
  else {
    for (int i = 1; i <= n; i++) {
      row[i] = m;
    }
    memset(c, '+', sizeof c);
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        if (row[i] - 1 > m - (row[i] - 1)) {
           int ii = i, jj = j;
           while (col[jj] <= n - col[jj] && row[ii] - 1 > m - (row[ii] - 1)) {
              col[jj]++;
              row[ii]--;
              c[ii][jj] = '-';
              ii++;
           }
        }
      }
    }
  }

    for (int i = 1; i <= n; i++) {
      if (row[i] > m - row[i]) {
        ans++;
      }
    }
    for (int j = 1; j <= m; j++) {
      if (col[j] > n - col[j]) {
        ans++;
      }
    }

//    cout << "stroki\n";
//    for (int i = 1; i <= n; i++) {
//      cout << row[i] << " ";
//    }
//    cout << "\nstolbsi\n";
//    for (int i = 1; i <= m; i++) {
//      cout << col[i] << " ";
//    }cout << endl;



    printf("%d\n", ans);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      cout << c[i][j];
    }puts("");
  }

}

main() {
  cin >> tests;
  while (tests--) {
    solve();
  }
}

Compilation message

stones.cpp:93:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 4 ms 376 KB Output is correct
4 Incorrect 6 ms 376 KB in the table A+B is not equal to 32
# 결과 실행 시간 메모리 Grader output
1 Incorrect 48 ms 1304 KB Wrong answer in test 97 21: 107 < 116
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 46 ms 1272 KB Wrong answer in test 24 24: 35 < 44
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 4 ms 376 KB Output is correct
4 Incorrect 6 ms 376 KB in the table A+B is not equal to 32