Submission #344414

# Submission time Handle Problem Language Result Execution time Memory
344414 2021-01-05T17:38:59 Z Sprdalo Red-blue table (IZhO19_stones) C++17
38 / 100
42 ms 6928 KB
#include <bits/stdc++.h>

using namespace std;

#define int ll
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pi;
typedef pair<ll, ll> pl;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<double> vd;
typedef vector<bool> vb;
typedef vector<char> vc;
typedef vector<string> vs;
typedef vector<pi> vp;
typedef vector<pl> vpl;

void solve(int n, int m){
    int k = 0;
        if (n > m)
            k = 1;
 
        vector<vi> a(n, vi(m, k));
 
        if (n>m){
            for (int j = 0; j < (m-1)/2; ++j){
                for (int i = 0; i < n/2 + 1; ++i){
                    a[i][j] = 0;
                }
            }
        } else {
            for (int i = 0; i < (n-1)/2; ++i){
                for (int j = 0; j < m/2 + 1; ++j){
                    a[i][j] = 1;
                }
            }
        }
 
        int sol = 0;
        for (int i = 0; i < n; ++i){
            int x = 0;
            for (int j = 0; j < m; ++j){
                x += a[i][j];
            }
            if (x > m/2)
                ++sol;
        }
 
        for (int j = 0; j < m; ++j){
            int x = 0;
            for (int i = 0; i < n; ++i){
                x += 1 - a[i][j];
            }
            if (x > n/2)
                ++sol;
        }
 
        cout << sol << '\n';
        for (int i = 0; i < n; ++i){
            for (int j = 0; j < m; ++j){
                if (a[i][j])
                    cout << "+";
                else
                    cout << "-";
            }
            cout << '\n';
        }
}

signed main()
{
    ios_base::sync_with_stdio(false); 
    cin.tie(nullptr); 
    cout.tie(nullptr); 
    cerr.tie(nullptr);    

    int t;
    cin >> t;

    for (int e = 0; e < t; ++e){
        int n, m;
        cin >> n >> m;

        if (n <= 4 || m <= 4){
            solve(n, m);
            continue;
        }

        int l,r;
        if (n%2){
            l = r = n/2;
        } else {
            l = n/2-1; r = n/2;
        }

        vector<vi> a(n, vi(m, -1));
        for (int j = 0; j < m; ++j){
            a[l][j] = a[r][j] = 0;
        }

        if (m%2)
            l = r = m/2;
        else{
            l = m/2-1; r = m/2;
        }

        for (int i = 0; i < n; ++i){
            a[i][l] = a[i][r] = 1;
        }

        for (int i = 0; i < n/2; ++i){
            for (int j = 0; j < m/2; ++j){
                if (a[i][j] != -1) continue;
                a[i][j] = 1;
            }
        }

        for (int i = 0; i < n/2; ++i){
            for (int j = m/2; j < m; ++j){
                if (a[i][j] != -1) continue;
                a[i][j] = 0;
            }
        }

        for (int i = n/2; i < n; ++i){
            for (int j = 0; j < m/2; ++j){
                if (a[i][j] != -1) continue;
                a[i][j] = 0;
            }
        }

        for (int i = 0; i < n; ++i)
            for (int j = 0; j < m; ++j)
                if (a[i][j] == -1)
                    a[i][j] = 1;

        int sol = 0;
        for (int i = 0; i < n; ++i){
            int x = 0;
            for (int j = 0; j < m; ++j){
                x += a[i][j];
            }

            if (x > m/2){
                ++sol;
            }
        }

        for (int j = 0; j < m; ++j){
            int x = 0;
            for (int i = 0; i < n; ++i){
                x += 1 - a[i][j];
            }
            if (x > n/2)
                ++sol;
        }

        cout << sol << '\n';
        for (int i = 0; i < n; ++i){
            for (int j = 0; j < m; ++j)
                if (a[i][j])
                    cout << "+";
                else 
                    cout << "-";
                cout << '\n';
        }
    }
}

Compilation message

stones.cpp: In function 'int main()':
stones.cpp:161:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
  161 |             for (int j = 0; j < m; ++j)
      |             ^~~
stones.cpp:166:17: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
  166 |                 cout << '\n';
      |                 ^~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Incorrect 3 ms 492 KB Wrong answer in test 38 5: 40 < 41
# Verdict Execution time Memory Grader output
1 Correct 42 ms 1644 KB Output is correct
2 Correct 39 ms 6252 KB Output is correct
3 Correct 36 ms 6928 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 39 ms 1876 KB Wrong answer in test 6 6: 8 < 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 364 KB Output is correct
2 Correct 1 ms 364 KB Output is correct
3 Correct 1 ms 364 KB Output is correct
4 Incorrect 3 ms 492 KB Wrong answer in test 38 5: 40 < 41