제출 #1156276

#제출 시각아이디문제언어결과실행 시간메모리
1156276Jawad_Akbar_JJRed-blue table (IZhO19_stones)C++20
27 / 100
26 ms1348 KiB
#include <iostream>
#include <deque>

using namespace std;
char a[1005][1005];
int num[1005];

int solve(int n, int m, int p = 0, int sw = 0){
	for (int i=0;i<=n;i++)
		num[i] = m;

	for (int i=0;i<n;i++)
		for (int j=0;j<m;j++)
			a[i][j] = '+';

	deque<int> d;
	while (d.size() + d.size() <= n)
		d.push_back(d.size());

	int Ans = n;
	for (int j=0;j<m;j++){
		bool t = 1;
		for (int i : d)
			t &= (num[i] - 1) * 2 > m;
		if (!t)
			break;
		Ans++;
		for (int i : d)
			num[i]--, a[i][j] = '-';
		d.push_back((d.back() + 1) % n);
		d.pop_front();
	}
	if (p == 0) return Ans;

	cout<<Ans<<'\n';
	if (sw){
		for (int j=0;j<m;j++){
			for (int i=0;i<n;i++)
				a[i][j] = '+' + '-' - a[i][j], cout<<a[i][j];
			cout<<'\n';
		}
		return Ans;
	}

	for (int i=0;i<n;i++){
		for (int j=0;j<m;j++)
			cout<<a[i][j];
		cout<<'\n';
	}
	return Ans;
}

int main(){
	int n, m, t;
	cin>>t;
	while (t--){
		cin>>n>>m;

		if (solve(n, m) > solve(m, n))
			solve(n, m, 1, 0);
		else
			solve(m, n, 1, 1);
	}
}
#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...