Submission #488850

# Submission time Handle Problem Language Result Execution time Memory
488850 2021-11-20T15:50:02 Z Mihai7218 Red-blue table (IZhO19_stones) C++14
43 / 100
33 ms 1272 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/2+m/2>4 && n%4==2)
            {
            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/2+m/2>4 && m%4==2)
            {
            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 Incorrect 1 ms 204 KB in the table A+B is not equal to 51
# 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 Incorrect 1 ms 204 KB in the table A+B is not equal to 51
# Verdict Execution time Memory Grader output
1 Correct 33 ms 1272 KB Output is correct
2 Correct 28 ms 1152 KB Output is correct
3 Correct 24 ms 1088 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 30 ms 1196 KB Output is correct
2 Correct 26 ms 1020 KB Output is correct
3 Correct 21 ms 972 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 Incorrect 1 ms 204 KB in the table A+B is not equal to 51