답안 #236482

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
236482 2020-06-02T11:46:16 Z kshitij_sodani Red-blue table (IZhO19_stones) C++17
58 / 100
57 ms 3224 KB
#include <bits/stdc++.h>
using namespace std;
typedef int64_t llo;
#define mp make_pair
#define pb push_back
#define a first
#define b second
int n,m,t;
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin>>t;
	while(t--){
		cin>>n>>m;
		if(n==1){
			cout<<m<<endl;
			for(int j=0;j<m;j++){
				cout<<"-";
			}
			cout<<endl;
		}
		else if(m==1){
			cout<<n<<endl;
			for(int j=0;j<n;j++){
				cout<<"+"<<endl;
			}
			cout<<endl;
		}
		else if(n==2){
			cout<<m<<endl;
			for(int i=0;i<m;i++){
				cout<<"-";
			}
			cout<<endl;
			for(int i=0;i<m;i++){
				cout<<"-";
			}
			cout<<endl;
		}
		else if(m==2){
			cout<<n<<endl;
			for(int i=0;i<n;i++){
				cout<<"++"<<endl;
			}
		}
		else if(n==3){
			cout<<(m+1)<<endl;
			for(int i=0;i<m;i++){
				cout<<"-";
			}
			cout<<endl;
			for(int i=0;i<m;i++){
				cout<<"+";
			}
			cout<<endl;
			for(int i=0;i<m;i++){
				cout<<"-";
			}
			cout<<endl;
		}
		else if(m==3){
			cout<<(n+1)<<endl;
			for(int i=0;i<n;i++){
				cout<<"+-+"<<endl;
			}
		}
		else if(n==4){
			cout<<m+1<<endl;
			for(int j=0;j<3;j++){
				for(int i=0;i<m;i++){
					cout<<"-";
				}
				cout<<endl;
			}
			for(int i=0;i<m;i++){
					cout<<"+";
				}
				cout<<endl;

		}
		else if(m==4){
			cout<<n+1<<endl;
			for(int i=0;i<n;i++){
				cout<<"+++-"<<endl;
			}
		}
		/*else if(m%2==1 and n%2==1){
			if(m+3+(n-5)/2>n+3+(m-5)/2){
				cout<<(m+3+(n-5)/2)<<endl;
				int it[n][m];
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						it[i][j]=0;
					}
				}
				for(int i=0;i<(m+2)/2;i++){
					it[0][i]=1;
				}
				for(int i=m-(m+2)/2;i<m;i++){
					it[1][i]=1;
				}
				for(int j=0;j<m;j++){
					if(it[0][j]!=1 or it[1][j]!=1){
						it[2][j]=1;
					}
				}
				for(int i=5;i<n;i+=2){
					for(int j=0;j<m;j++){
						it[i][j]=1;
					}
				}
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(it[i][j]==1){
							cout<<"+";
						}
						else{
							cout<<"-";
						}
					}
					cout<<endl;
				}
			}
			else{
				cout<<(n+3+(m-5)/2)<<endl;
				int it[n][m];
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						it[i][j]=0;
					}
				}
				for(int i=0;i<(n+2)/2;i++){
					it[i][0]=1;
				}
				for(int i=n-(n+2)/2;i<n;i++){
					it[i][1]=1;
				}
				for(int j=0;j<n;j++){
					if(it[j][0]!=1 or it[j][1]!=1){
						it[j][2]=1;
					}
				}
				for(int j=5;j<m;j+=2){
					for(int i=0;i<n;i++){
						it[i][j]=1;
			//			cout<<i<<","<<j<<endl;
					}
				}
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(it[i][j]==1){
							cout<<"-";
						}
						else{
							cout<<"+";
						}
					}
					cout<<endl;
				}
			}
		}*/
		else if(n==5){
			cout<<(m+3+(n-5)/2)<<endl;
			int it[n][m];
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					it[i][j]=0;
				}
			}
			for(int i=0;i<(m+2)/2;i++){
				it[0][i]=1;
			}
			for(int i=m-(m+2)/2;i<m;i++){
				it[1][i]=1;
			}
			for(int j=0;j<m;j++){
				if(it[0][j]!=1 or it[1][j]!=1){
					it[2][j]=1;
				}
			}
			for(int i=5;i<n;i+=2){
				for(int j=0;j<m;j++){
					it[i][j]=1;
				}
			}
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					if(it[i][j]==1){
						cout<<"+";
					}
					else{
						cout<<"-";
					}
				}
				cout<<endl;
			}
		}
		else if(m==5){

			cout<<(n+3)<<endl;
			int it[n][m];
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					it[i][j]=0;
				}
			}
			for(int i=0;i<(n+2)/2;i++){
				it[i][0]=1;
			}
			for(int i=n-(n+2)/2;i<n;i++){
				it[i][1]=1;
			}
			for(int j=0;j<n;j++){
				if(it[j][0]!=1 or it[j][1]!=1){
					it[j][2]=1;
				}
			}
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					if(it[i][j]==1){
						cout<<"-";
					}
					else{
						cout<<"+";
					}
				}
				cout<<endl;
			}
		}
		else if(m==n){
			if(m==6){
				cout<<9<<endl;
				cout<<"++++--"<<endl;
				cout<<"--++++"<<endl;
				cout<<"++--++"<<endl;
				cout<<"------"<<endl;
				cout<<"------"<<endl;
				cout<<"------"<<endl;
				continue;
			}
			int it[n][m];
			for(int i=0;i<n;i++){
				for(int j=0;j<m;j++){
					it[i][j]=0;
				}
			}
			if(m%2==1 and n%2==1){
				cout<<(4*(m/2))<<endl;
				for(int i=0;i<(m+1)/2;i++){
					for(int j=0;j<(n)/2;j++){
						it[j][i]=1;
					}
				}
				for(int i=0;i<(m+1)/2;i++){
					for(int j=0;j<(n)/2;j++){
						it[n-j-1][m-i-1]=1;
					}
				}
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(it[i][j]==1){
							cout<<"+";
						}
						else{
							cout<<"-";
						}
					}
					cout<<endl;
				}
			}
			else{
				cout<<(4*(n/2-1))<<endl;
				for(int i=0;i<(m+2)/2;i++){
					for(int j=0;j<(n-1)/2;j++){
						it[j][i]=1;
					}
				}
				for(int i=0;i<(m+2)/2;i++){
					for(int j=0;j<(n-1)/2;j++){
						it[n-j-1][m-i-1]=1;
					}
				}
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(it[i][j]==1){
							cout<<"+";
						}
						else{
							cout<<"-";
						}
					}
					cout<<endl;
				}

			}
		}

		/*int it[n][m];
			if(n>m){
				int l=0;
				for(int i=0;i<n;i++){
					for(int j=l;j<l+(m+2)/2;j++){
						it[i][j%m]=1;
					}
					l=l+(m+2)/2;
					l%=m;
				}
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(it[i][j]){
							cout<<"+";
						}
						else{
							cout<<"-";
						}
					}
					cout<<endl;
				}
			}
			else{
				for(int i=0;i<n;i++){
					for(int j=0;j<m;j++){
						if(i%2==0){
							cout<<"-";
						}
						else{
							cout<<"+";
						}
					}
					cout<<endl;
				}
			}*/
		
	}


	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 13 ms 384 KB Output is correct
4 Correct 19 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 8 ms 384 KB Wrong answer
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 57 ms 1400 KB Output is correct
2 Correct 34 ms 3224 KB Output is correct
3 Correct 29 ms 2432 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 13 ms 384 KB Output is correct
4 Correct 19 ms 384 KB Output is correct
5 Incorrect 8 ms 384 KB Wrong answer
6 Halted 0 ms 0 KB -