제출 #341579

#제출 시각아이디문제언어결과실행 시간메모리
341579Dilshod_ImomovRed-blue table (IZhO19_stones)C++17
43 / 100
41 ms1548 KiB
# include <bits/stdc++.h> # define speed ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0) # define int long long # define fi first # define se second using namespace std; const int N = 1e3 + 7; const int mod = 1e9 + 7; char a[N][N]; void solve() { int n, m, inv = 0; cin >> n >> m; if ( m > n ) { inv = 1; swap( n, m ); } int needr = (m + 2) / 2; for ( int i = 1; i <= n; i++ ) { for ( int j = 1; j <= m; j++ ) { if ( j <= needr ) { if ( !inv ) { a[i][j] = '+'; } else { a[i][j] = '-'; } } else { if ( !inv ) { a[i][j] = '-'; } else { a[i][j] = '+'; } } } } vector < int > vc(3); vc[0] = n / 3 + ((n % 3) >= 1); vc[1] = vc[0] + n / 3 + ((n % 3) == 2); int ans = n + (m - needr); if ( m & 1 && m > 1 ) { int cnt = m - needr - 1, ind = 0; ans += cnt; int i; for ( i = 1; i <= n; i++ ) { if ( i <= vc[0] ) { ind = 0; } else if ( i <= vc[1] ) { ind = 1; } else { break; } for ( int j = needr; j > 2; j-- ) { if ( !inv ) { a[i][j] = '-'; a[i][j + ind * cnt] = '+'; } else { a[i][j] = '+'; a[i][j + ind * cnt] = '-'; } } } int x = n / 2 - vc[0], turn = 3; while ( x ) { for ( int j = needr; j > 2; j-- ) { if ( j == turn ) { if ( !inv ) { a[i][j] = '-'; a[i][m] = '+'; } else { a[i][j] = '+'; a[i][m] = '-'; } continue; } } x--; turn++; i++; if ( turn > needr ) { turn = 3; } } x = n / 2 - ((n / 3) + ((n % 3) == 2)); turn = needr + 1; while ( x ) { for ( int j = needr; j > 2; j-- ) { if ( !inv ) { a[i][j] = '-'; if ( j + cnt != turn ) { a[i][j + cnt] = '+'; } else { a[i][j + cnt] = '-'; a[i][m] = '+'; } } else { a[i][j] = '+'; if ( j + cnt != turn ) { a[i][j + cnt] = '-'; } else { a[i][j + cnt] = '+'; a[i][m] = '-'; } } } x--; i++; turn++; if ( turn == m ) { turn = needr + 1; } } for ( int j = 3; j <= needr; j++ ) { if ( !inv ) { a[n][j] = '-'; a[n][m - j + 3] = '+'; } else { a[n][j] = '+'; a[n][m - j + 3] = '-'; } } } cout << ans << '\n'; if ( !inv ) { for ( int i = 1; i <= n; i++ ) { for ( int j = 1; j <= m; j++ ) { cout << a[i][j]; } cout << '\n'; } } else { for ( int i = 1; i <= m; i++ ) { for ( int j = 1; j <= n; j++ ) { cout << a[j][i]; } cout << '\n'; } } } int32_t main() { speed; int T = 1; cin >> T; while ( T-- ) { solve(); } }
#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...