답안 #502044

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
502044 2022-01-05T07:05:09 Z enerelt14 Red-blue table (IZhO19_stones) C++14
69 / 100
34 ms 1220 KB
#include<bits/stdc++.h>
using namespace std;
void solve(){
	int n, m;
	cin>>n>>m;
	if (n==1){
		cout<<m<<"\n";
		for (int i=1;i<=m;i++)cout<<"-";
		cout<<"\n";
		return;
	}
	if (m==1){
		cout<<n<<"\n";
		for (int i=1;i<=n;i++)cout<<"+\n";
		return;	
	}
	if (n==2){
		cout<<m<<"\n";
		for (int i=1;i<=2;i++){
			for (int j=1;j<=m;j++){
				cout<<"-";
			}
			cout<<"\n";
		}
		return;
	}
	if (m==2){
		cout<<n<<"\n";
		for (int i=1;i<=n;i++){
			for (int j=1;j<=2;j++){
				cout<<"+";
			}
			cout<<"\n";
		}
		return;
	}
	if (n%2==1 && m%2==1){
		cout<<n+m-2<<"\n";
		for (int i=1;i<=n;i++){
			for (int j=1;j<=m;j++){
				if (i!=n && j!=m){
					if ((i+j)%2==1)cout<<"-";
					else cout<<"+";
					continue;
				}
				if (i==n)cout<<"-";
				else cout<<"+";
			}
			cout<<"\n";
		}
		return;
	}
	if (n%2==0 && m%2==0){
		if (n/2>=m-3){
			cout<<n+m-3<<"\n";
			int l=m/2-2, x;
			for (int i=1;i<=n;i++){
				for (int j=1;j<=m-3;j++){
					x=j-i;
					while(x<0)x+=(m-3);
					if (x<l)cout<<"+";
					else cout<<"-";
				}
				cout<<"+++\n";
			}
			return;
		}
		if (m/2>=n-3){
			cout<<n+m-3<<"\n";
			int l=n/2-2, x;
			for (int i=1;i<=n-3;i++){
				for (int j=1;j<=m;j++){
					x=i-j;
					while(x<0)x+=(n-3);
					if (x<l)cout<<"-";
					else cout<<"+";
				}
				cout<<"\n";
			}
			for (int i=1;i<=3;i++){
				for (int j=1;j<=m;j++){
					cout<<"-";
				}
				cout<<"\n";
			}
			return;
		}
		else{
			cout<<n+m-4<<"\n";
			for (int i=1;i<=n;i++){
				for (int j=1;j<=m;j++){
					if (i<n-1 && j<m-1){
						if ((i+j)%2==0)cout<<"+";
						else cout<<"-";
						continue;
					}
					if (i>n-2)cout<<"-";
					else cout<<"+";
				}
				cout<<"\n";
			}
		}
		return;
	}
	if (n%2==0){
		if (n>=2*(m-2)){
			cout<<n+m-2<<"\n";
			int l=m/2-1, x;
			for (int i=1;i<=n;i++){
				for (int j=1;j<=m-2;j++){
					x=j-i;
					while(x<0)x+=(m-2);
					if (x<l)cout<<"+";
					else cout<<"-";
				}
				cout<<"++\n";
			}
			return;
		}
		else{
			cout<<n+m-3<<"\n";
			for (int i=1;i<=n;i++){
				for (int j=1;j<=m;j++){
					if (i<=n-2 && j<=m-1){
						if ((i+j)%2==0)cout<<"+";
						else cout<<"-";
						continue;
					}
					if (i>n-2)cout<<"-";
					else cout<<"+";
				}
				cout<<"\n";
			}
			return;
		}
	}
	else{
		if (m>=2*(n-2)){
			cout<<n+m-2<<"\n";
			int x, l=n-2;
			if (n==3)l=0;
			for (int i=1;i<=n-2;i++){
				for (int j=1;j<=m;j++){
					x=j-i;
					if (l==0){
						cout<<"+";
						continue;
					}
					if (x%l==0)cout<<"-";
					else cout<<"+";
				}
				cout<<"\n";
			}
			for (int i=1;i<=2;i++){
				for (int j=1;j<=m;j++){
					cout<<"-";
				}
				cout<<"\n";
			}
			return;
		}
		else{
			cout<<n+m-3<<"\n";
			for (int i=1;i<=n;i++){
				for (int j=1;j<=m;j++){
					if (i<=n-1 && j<=m-2){
						if ((i+j)%2==0)cout<<"+";
						else cout<<"-";
						continue;
					}
					if (j>m-2)cout<<"+";
					else cout<<"-";
				}
				cout<<"\n";
			}
			return;
		}	
	}
}
int main(){
	int t;
	cin>>t;
	while(t--){
		solve();
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 2 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 30 ms 1204 KB Output is correct
2 Correct 25 ms 1112 KB Output is correct
3 Correct 34 ms 1120 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 1220 KB Output is correct
2 Correct 26 ms 1064 KB Output is correct
3 Correct 27 ms 1092 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 2 ms 332 KB Output is correct
5 Correct 30 ms 1204 KB Output is correct
6 Correct 25 ms 1112 KB Output is correct
7 Correct 34 ms 1120 KB Output is correct
8 Correct 29 ms 1220 KB Output is correct
9 Correct 26 ms 1064 KB Output is correct
10 Correct 27 ms 1092 KB Output is correct
11 Incorrect 8 ms 436 KB in the table A+B is not equal to 25
12 Halted 0 ms 0 KB -