답안 #519502

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
519502 2022-01-26T12:56:48 Z shmad Red-blue table (IZhO19_stones) C++17
28 / 100
28 ms 2540 KB
#pragma GCC optimize("O3", "unroll-loops") // "Ofast"
#pragma GCC target("avx2", "bmi", "bmi2", "lzcnt", "popcnt") 

#include <bits/stdc++.h>

#define int long long
#define vt vector
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)(x).size()
#define ff first
#define ss second
#define dbg(x) cerr << #x << " = " << x << '\n'

using namespace std;
using ll = long long;
using pii = pair<int, int>;
using vvi = vt< vt<int> >;
using vc = vt<char>;
using vvc = vt<vc>;

const int N = 1e6 + 5, mod = 1e9 + 7, inf = 1e18 + 7, B = 500, LIM = (1ll << 60);
const double eps = 1e-6;

int n, m;

void solve_odd (vvc a) {
	cout << n - 1 + m - 1 << '\n';
	for (int i = 1; i < n; i++) {
		for (int j = 1; j < m; j++) {
			if ((i + j) & 1) a[i][j] = '-';
		}
	}
	for (int j = 1; j <= m; j++) a[n][j] = '-';	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) cout << a[i][j];
		cout << '\n';
	}
}

void solve_m1 (vvc a) {
	cout << n << '\n';
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) cout << a[i][j];
		cout << '\n';
	}
}

void solve_n1 (vvc a) {
	cout << m << '\n';
	for (int j = 1; j <= m; j++) a[1][j] = '-';
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) cout << a[i][j];
		cout << '\n';
	}
}

void solve_1 (vvc a) {
	if (n == 2) {
		cout << m << '\n';
		if (m == 3 || m == 4) {
			for (int i = 1; i <= n; i++) {
				for (int j = 1; j <= m; j++) a[i][j] = '-';
			}
		}
	}
	if (n == 3) {
		if (m == 2) cout << n << '\n';
		if (m == 3) cout << "4\n", a[1][1] = a[2][2] = a[3][1] = a[3][2] = a[3][3] = '-';
		if (m == 4) {
			cout << "5\n";
			for (int i = 2; i <= n; i++) {
				for (int j = 1; j <= m; j++) a[i][j] = '-';
			}
	   	}
	}
	if (n == 4) {
		if (m == 2) cout << n << '\n';
		if (m == 3 || m == 4) {
			cout << "5\n";;
			for (int i = 1; i <= n; i++) a[i][m] = '-';
		}
	}
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) cout << a[i][j];
		cout << '\n';
	}
}

void solve () {
	cin >> n >> m;
	vvc a(n + 1, vc (m + 1, '+'));    
	if (m == 1) return (void)(solve_m1(a));
	if (n == 1) return (void)(solve_n1(a));
	bool sub1 = (n <= 4 && m <= 4), sub4 = ((n & 1) && (m & 1));
	if (sub1) {
		solve_1(a);
		return;
	}
	if (sub4) {
		solve_odd(a);
		return;
	}
	cout << '\n';
}

bool testcases = 1;
                  
signed main() {
#ifdef ONLINE_JUDGE
	freopen(".in", "r", stdin);
	freopen(".out", "w", stdout);
#endif
    cin.tie(0) -> sync_with_stdio(0);
    int test = 1;
    if (testcases) cin >> test;
    for (int cs = 1; cs <= test; cs++) {
        solve();
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 332 KB Wrong answer
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 1 ms 332 KB Wrong answer
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 28 ms 1300 KB Output is correct
2 Correct 24 ms 2244 KB Output is correct
3 Correct 19 ms 2540 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 12 ms 824 KB Wrong answer
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Incorrect 1 ms 332 KB Wrong answer
4 Halted 0 ms 0 KB -