답안 #683659

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
683659 2023-01-19T05:07:36 Z nwgnbtb Red-blue table (IZhO19_stones) C++14
38 / 100
30 ms 1296 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
#define pb push_back // kak push_back 5
#define endl '\n'
#define FOR(i,start,end) for(int i = start;i < end;i ++)
const ll mxn = 1e6;
ll n,m,a[mxn];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll tt = 1;
    cin >> tt;   
    while(tt --){
        ll n,m;
        cin >> n >> m;
        if(n >= m){
            if(n == 1){
                cout << 1 << endl << '+' << endl;
                continue;
            }
            if(m == 1){
                cout << n << endl;
                for(int i = 0;i < n;i ++) cout << '+' << endl;
                continue;
            }
            if(m % 2 == 0 && (n + (m - 2) / 2 + (m - 2) % 2) >= (n - 1) + (m - 2) || m % 2 == 1 && (n + (m - 2) / 2 + (m - 2) % 2) >= (n - 1) + (m - 1)){
                cout << n + (m - 2) / 2 + (m - 2) % 2 << endl;
                for(int i = 0;i < n;i ++){
                    cout<<'+';
                    for(int j = 1;j < m - 1;j ++){
                        if(j % 2 == 1) cout << '-';
                        else cout << '+';
                    }
                    cout << '+' << endl;
                }
            }
            else{
                if(m % 2 == 1){
                    cout << (n - 1) + (m - 1) << endl;
                    for(int i = 0;i < n;i ++){
                        if(i == n - 1){
                            for(int j = 0;j < m;j ++){
                                cout << '-';
                            }
                            cout << endl;
                            continue;
                        }
                        cout << '+';
                        for(int j = 1;j < m;j ++){
                            if(i % 2 == 0){
                                if(j % 2 == 1) cout << '-';
                                else cout << '+';
                            }
                            else{
                                if(j % 2 == 1) cout << '+';
                                else cout << '-';
                            }
                        }
                        cout << endl;
                    }
                }
                else{
                    cout << (n - 1) + (m - 2) << endl;
                    for(int i = 0;i < n;i ++){
                        if(i == n - 1){
                            for(int j = 0;j < m;j ++){
                                cout << '-';
                            }
                            cout << endl;
                            continue;
                        }
                        cout << '+';
                        for(int j = 1;j < m - 1;j ++){
                            if(i % 2 == 0){
                                if(j % 2 == 1) cout << '-';
                                else cout << '+';
                            }
                            else{
                                if(j % 2 == 1) cout << '+';
                                else cout << '-';
                            }
                        }
                        cout << '+' << endl;
                    }
                }
            }
        }
        else{
            if(m == 1){
                cout << 1 << endl << '-' << endl;
                continue;
            }
            if(n == 1){
                cout << m << endl;
                for(int i = 0;i < m;i ++) cout << '-';
                cout << endl;
                continue;
            }
            if(n % 2 == 0 && m + (n - 2) / 2 + (n - 2) % 2 >= m - 1 + n - 2 || n % 2 == 1 && m + (n - 2) / 2 + (n - 2) % 2 >= m - 1 + n - 1){
                cout << m + (n - 2) / 2 + (n - 2) % 2 << endl;
                for(int i = 0;i < n;i ++){
                    for(int j = 0;j < m;j ++){
                        if(i == 0 || i == n - 1){
                            cout << '-';
                        }
                        else if(i % 2 == 1) cout << '+';
                        else cout << '-';
                    }
                    cout << endl;
                }
            }
            else{
                if(n % 2 == 1){
                    cout << m - 1 + n - 1 << endl;
                    for(int i = 0;i < n;i ++){
                        if(i == 0){
                            for(int j = 0;j < m - 1;j ++) cout << '-';
                            cout << '+' << endl;
                            continue;
                        }
                        for(int j = 0;j < m - 1;j ++){
                            if(i % 2 == 1){
                                if(j % 2 == 0) cout << '+';
                                else cout << '-';
                            }
                            else{
                                if(j % 2 == 0) cout << '-';
                                else cout << '+';
                            }
                        }
                        cout << '+' << endl;
                    }
                }
                else{
                    cout << m - 1 + n - 2 << endl;
                    for(int i = 0;i < n;i ++){
                        if(i == 0 || i == n - 1){
                            for(int j = 0;j < m - 1;j ++) cout << '-';
                            cout << '+' << endl;
                            continue;
                        }
                        for(int j = 0;j < m - 1;j ++){
                            if(i % 2 == 1){
                                if(j % 2 == 0) cout << '+';
                                else cout << '-';
                            }
                            else{
                                if(j % 2 == 0) cout << '-';
                                else cout << '+';
                            }
                        }
                        cout << '+' << endl;
                    }
                }
            }
        }
    }
}

Compilation message

stones.cpp: In function 'int main()':
stones.cpp:28:27: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   28 |             if(m % 2 == 0 && (n + (m - 2) / 2 + (m - 2) % 2) >= (n - 1) + (m - 2) || m % 2 == 1 && (n + (m - 2) / 2 + (m - 2) % 2) >= (n - 1) + (m - 1)){
      |                ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
stones.cpp:101:27: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  101 |             if(n % 2 == 0 && m + (n - 2) / 2 + (n - 2) % 2 >= m - 1 + n - 2 || n % 2 == 1 && m + (n - 2) / 2 + (n - 2) % 2 >= m - 1 + n - 1){
      |                ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Incorrect 1 ms 340 KB in the table A+B is not equal to 41
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 23 ms 1296 KB Output is correct
2 Correct 18 ms 1212 KB Output is correct
3 Correct 18 ms 1108 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 30 ms 1224 KB in the table A+B is not equal to 45
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 328 KB Output is correct
3 Correct 1 ms 340 KB Output is correct
4 Incorrect 1 ms 340 KB in the table A+B is not equal to 41
5 Halted 0 ms 0 KB -