제출 #434480

#제출 시각아이디문제언어결과실행 시간메모리
434480dutchRed-blue table (IZhO19_stones)C++17
38 / 100
44 ms2032 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

int n, m;
bool g[1000][1000];

int fill(int x){
	for(int i=0; i<n; ++i) fill(g[i], g[i]+m, 0);
	int req = m/2, ver = n/2;
	while(req <= m-req) ++req;
	while(ver <= n-ver) ++ver;
	req -= m-x;
	for(int j=0; j<x; ++j)
		for(int i=0; i<n; ++i)
			g[i][j] = (j < req) ? n-i <= ver : i < ver;

	int curr = x;
	for(int i=0; i<n; ++i){
		int s = 0;
		for(int j=0; j<x; ++j) s += !g[i][j];
		curr += s >= req;
	}
	return curr;
}

signed main(){
	cin.tie(0)->sync_with_stdio(0);
	int T; cin >> T;
	while(T--){
		cin >> n >> m;
		array<int, 2> mx = {-1, -1};
		for(int x=max(0LL, m-4); x<=m; ++x){
			mx = max(mx, {fill(x), x});
		}
		fill(mx[1]);
		cout << mx[0] << '\n';
		for(int i=0; i<n; ++i){
			for(int j=0; j<m; ++j)
				cout << (g[i][j] ? '-' : '+');
			cout << '\n';
		}
	}
}
#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...