Submission #488852

# Submission time Handle Problem Language Result Execution time Memory
488852 2021-11-20T16:04:03 Z Mihai7218 Red-blue table (IZhO19_stones) C++14
69 / 100
35 ms 1248 KB
#include <iostream>
using namespace std;
int t, n, m, mop, nop;
int main()
{
    cin >> t;
    for (int tc = 1; tc <= t; tc++)
    {
        cin >> n >> m;
        if (n >= m)
        {
            if (n % 2 == 0 && n>4&&m>4)
            {
            cout << max(max(n+ (m/2)-1+(m%2), (m+n-4+m%2+n%2)), n+m/2+m%2) << '\n';
            if (n+ (m/2)-1+(m%2) >= (m+n-4+m%2+n%2) && n+ (m/2)-1+(m%2) >= n+m/2+m%2)
            {
                mop = (m/2)-1+(m%2);
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-j >= 0)
                        {
                            cout << '-';
                        }
                        else cout << '+';
                    }
                    cout << '\n';
                }
            }
            else if (n+m/2+m%2>(m+n-4+m%2+n%2) && n%2 == 0)
            {
                mop = m/2+m%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-j >= 0)
                        {
                            if (j%mop == i%mop)
                                cout << '+';
                            else
                                cout << '-';
                        }
                        else
                            cout << '+';
                    }
                    cout << '\n';
                }
            }
            else
            {
                mop = n-2+n%2;
                nop = m-2+m%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop - i >= 0)
                        {
                            if (i % 2 == 0)
                            {
                                if ((m/2+1) - j >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                            if (i % 2 == 1)
                            {
                                if (j - (m/2+1) + (1-m%2) >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                        }
                            else cout << '-';
                    }
                    cout << '\n';
                }
            }
            }
            else
            {
                cout << max(n+ (m/2)-1+(m%2), (m+n-4+m%2+n%2)) << '\n';
            if (n+ (m/2)-1+(m%2) >= (m+n-4+m%2+n%2))
            {
                mop = (m/2)-1+(m%2);
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-j >= 0)
                        {
                            cout << '-';
                        }
                        else cout << '+';
                    }
                    cout << '\n';
                }
            }
            else
            {
                mop = n-2+n%2;
                nop = m-2+m%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop - i >= 0)
                        {
                            if (i % 2 == 0)
                            {
                                if ((m/2+1) - j >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                            if (i % 2 == 1)
                            {
                                if (j - (m/2+1) + (1-m%2) >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                        }
                            else cout << '-';
                    }
                    cout << '\n';
                }
            }
            }
        }
        else
        {
            if (m%2 == 0 && n>4&&m>4)
            {
            cout << max(max(m + (n/2)-1+(n%2), (m+n-4+m%2+n%2)), m+n/2+n%2) << '\n';
            if ( m + (n/2)-1+(n%2) >= (m+n-4+m%2+n%2) && m + (n/2)-1+(n%2) >= m+n/2+n%2)
            {
                mop = (n/2)-1+(n%2);
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-i >= 0)
                        {
                            cout << '+';
                        }
                        else cout << '-';
                    }
                    cout << '\n';
                }
            }
            else if (m+n/2+n%2>(m+n-4+m%2+n%2) && m%2==0)
            {
                mop = n/2+n%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-i >= 0)
                        {
                            if (j%mop == i%mop)
                                cout << '-';
                            else
                                cout << '+';
                        }
                        else
                            cout << '-';
                    }
                    cout << '\n';
                }
            }
            else
            {
                mop = n-2+n%2;
                nop = m-2+m%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop - i >= 0)
                        {
                            if (i % 2 == 0)
                            {
                                if ((m/2+1) - j >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                            if (i % 2 == 1)
                            {
                                if (j - (m/2+1) + (1-m%2) >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                        }
                            else cout << '-';
                    }
                    cout << '\n';
                }
            }
            }
            else
            {
                cout << max(m + (n/2)-1+(n%2), (m+n-4+m%2+n%2)) << '\n';
            if ( m + (n/2)-1+(n%2) >= (m+n-4+m%2+n%2))
            {
                mop = (n/2)-1+(n%2);
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop-i >= 0)
                        {
                            cout << '+';
                        }
                        else cout << '-';
                    }
                    cout << '\n';
                }
            }
            else
            {
                mop = n-2+n%2;
                nop = m-2+m%2;
                for (int i = 1; i <= n; i++)
                {
                    for (int j = 1; j <= m; j++)
                    {
                        if (mop - i >= 0)
                        {
                            if (i % 2 == 0)
                            {
                                if ((m/2+1) - j >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                            if (i % 2 == 1)
                            {
                                if (j - (m/2+1) + (1-m%2) >= 0)
                                {
                                    cout << '+';
                                }
                                else cout << '-';
                            }
                        }
                            else cout << '-';
                    }
                    cout << '\n';
                }
            }
            }
        }
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 2 ms 204 KB Output is correct
4 Correct 3 ms 332 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 1180 KB Output is correct
2 Correct 35 ms 1092 KB Output is correct
3 Correct 27 ms 1112 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 1248 KB Output is correct
2 Correct 25 ms 1108 KB Output is correct
3 Correct 22 ms 996 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 2 ms 204 KB Output is correct
4 Correct 3 ms 332 KB Output is correct
5 Correct 30 ms 1180 KB Output is correct
6 Correct 35 ms 1092 KB Output is correct
7 Correct 27 ms 1112 KB Output is correct
8 Correct 30 ms 1248 KB Output is correct
9 Correct 25 ms 1108 KB Output is correct
10 Correct 22 ms 996 KB Output is correct
11 Incorrect 9 ms 464 KB Wrong answer in test 26 8: 30 < 31
12 Halted 0 ms 0 KB -