This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000;
char mat[MAX_N][MAX_N];
int sumL[MAX_N], sumC[MAX_N];
int eval( int n, int m ) {
for ( int l = 0; l < n; l++ )
sumL[l] = 0;
for ( int c = 0; c < m; c++ )
sumC[c] = 0;
for ( int l = 0; l < n; l++ ) {
for ( int c = 0; c < m; c++ ) {
sumL[l] += (mat[l][c] == '+' ? 1 : -1);
sumC[c] += (mat[l][c] == '+' ? -1 : +1);
}
}
int r = 0;
for ( int l = 0; l < n; l++ )
r += (sumL[l] > 0);
for ( int c = 0; c < m; c++ )
r += (sumC[c] > 0);
return r;
}
int solve1( int n, int m ) {
for ( int l = 0; l < n; l++ ) {
for ( int c = 0; c < m; c++ ) {
if ( l == n - 1 && m != 1 )
mat[l][c] = '-';
else {
if ( l < n / 2 ) {
if ( c <= m / 2 )
mat[l][c] = '+';
else
mat[l][c] = '-';
} else {
if ( c < m / 2 )
mat[l][c] = '-';
else
mat[l][c] = '+';
}
}
}
}
return eval( n, m );
}
int solve2( int n, int m ) {
for ( int l = 0; l < n; l++ ) {
for ( int c = 0; c < m; c++ ) {
if ( l >= n - 2 && m != 1 )
mat[l][c] = '-';
else {
if ( l < n / 2 ) {
if ( c <= m / 2 )
mat[l][c] = '+';
else
mat[l][c] = '-';
} else {
if ( c < m / 2 )
mat[l][c] = '-';
else
mat[l][c] = '+';
}
}
}
}
return eval( n, m );
}
int solve3( int n, int m ) {
for ( int l = 0; l < n; l++ ) {
for ( int c = 0; c < m; c++ ) {
if ( n > m ) {
if ( c <= m / 2 )
mat[l][c] = '+';
else
mat[l][c] = '-';
} else {
if ( l <= n / 2 )
mat[l][c] = '-';
else
mat[l][c] = '+';
}
}
}
return eval( n, m );
}
int main() {
int t;
cin >> t;
for ( ; t > 0; t-- ) {
int n, m;
cin >> n >> m;
int best = 1, r = solve1( n, m );
if ( solve2( n, m ) > r ) {
best = 2;
r = solve2( n, m );
}
if ( solve3( n, m ) > r ) {
best = 3;
r = solve3( n, m );
}
if ( best == 1 )
solve1( n, m );
if ( best == 2 )
solve2( n, m );
if ( best == 3 )
solve3( n, m );
cout << r << "\n";
for ( int l = 0; l < n; l++ ) {
for ( int c = 0; c < m; c++ )
cout << mat[l][c];
cout << "\n";
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |