제출 #344232

#제출 시각아이디문제언어결과실행 시간메모리
344232SprdaloRed-blue table (IZhO19_stones)C++17
0 / 100
46 ms1748 KiB
#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;

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

    int t = 1;
    cin >> t;

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

        if (n == 1 && m == 1){
            cout << "1\n+\n";
            continue;
        }

        if (n != m) throw SIGSEGV;

        vector<vi> a(n, vi(m, 0));
        if (n % 2 == 0){
            int k = 0;

            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;
                    }
                }
            }
        } else {
            for (int i = (n+1)/2; i < n; ++i){
                for (int j = 0; j < m; ++j){
                    a[i][j] = 1;
                }
            }

            for (int j = m/2; j < m; ++j)
                a[n/2][j] = 1;

            int x = (n+1)/2, y = m/2;
            while(1){
                a[x][y] = 0;
                if (x == n - 1 && y == m - 1) break;
                if (x < n-1)
                    ++x;
                if (y < m-1)
                    ++y;
            }
        }
        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';
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

stones.cpp: In function 'int main()':
stones.cpp:42:17: warning: unused variable 'k' [-Wunused-variable]
   42 |             int k = 0;
      |                 ^
#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...