제출 #1358728

#제출 시각아이디문제언어결과실행 시간메모리
1358728ivazivaRed-blue table (IZhO19_stones)C++20
26 / 100
14 ms2096 KiB
#include <bits/stdc++.h>

using namespace std;

#define MAXN 1001

int t,n,m,answer;
char a[MAXN][MAXN];

int main()
{
    cin>>t;
    for (int test=0;test<t;test++)
    {
        cin>>n>>m;
        if (n==m)
        {
            if (n==1) {cout<<1<<endl;cout<<'+'<<endl;continue;}
            if (n==2) {cout<<2<<endl;cout<<"++"<<endl;cout<<"++"<<endl;continue;}
            if (n==4) {cout<<5<<endl;cout<<"++++"<<endl;cout<<"----"<<endl;cout<<"----"<<endl;cout<<"----"<<endl;continue;}
            if (n==6)
            {
                cout<<9<<endl;
                cout<<"-++-++"<<endl;cout<<"+-++-+"<<endl;cout<<"++-++-"<<endl;
                cout<<"------"<<endl;cout<<"------"<<endl;cout<<"------"<<endl;
                continue;
            }
            for (int row=1;row<=n;row++)
            {
                for (int col=1;col<=m;col++) a[row][col]='+';
            }
            if (n%2==1)
            {
                int potrebno=n/2+1,curn=n;answer=n+m-2;
                for (int col=1;col<=m;col++) a[n-1][col]=a[n][col]='-';
                potrebno-=2;curn-=2;int curr=1;
                for (int col=1;col<=m;col++)
                {
                    int number=0;
                    while (number<potrebno)
                    {
                        a[curr][col]='-';number++;curr++;
                        if (curr==curn+1) curr=1;
                    }
                }
            }
            else
            {
                int potrebno=n/2+1,curn=n,curm=m;answer=n+m-4;
                for (int col=1;col<=m;col++) a[n-2][col]=a[n-1][col]=a[n][col]='-';
                potrebno-=3;curn-=3;curm--;int curr=1;
                for (int col=1;col<=curm;col++)
                {
                    int number=0;
                    while (number<potrebno)
                    {
                        a[curr][col]='-';number++;curr++;
                        if (curr==curn+1) curr=1;
                    }
                }
            }
            cout<<answer<<endl;
            for (int row=1;row<=n;row++)
            {
                for (int col=1;col<=m;col++) cout<<a[row][col];
                cout<<endl;
            }
            continue;
        }
        if (n%2==1 and m%2==1)
        {
            if (n==1)
            {
                cout<<m<<endl;
                for (int i=1;i<=m;i++) cout<<'-';
                cout<<endl;continue;
            }
            if (m==1)
            {
                cout<<n<<endl;
                for (int i=1;i<=n;i++) cout<<'+'<<endl;
                continue;
            }
            if (n<m)
            {
                for (int row=1;row<=n;row++)
                {
                    for (int col=1;col<=m;col++) a[row][col]='+';
                }
                int potrebno=n/2+1,curn=n;answer=n+m-2;
                for (int col=1;col<=m;col++) a[n-1][col]=a[n][col]='-';
                potrebno-=2;curn-=2;int curr=1;
                for (int col=1;col<=m;col++)
                {
                    int number=0;
                    while (number<potrebno)
                    {
                        a[curr][col]='-';curr++;number++;
                        if (curr==curn+1) curr=1;
                    }
                }
            }
            else
            {
                for (int row=1;row<=n;row++)
                {
                    for (int col=1;col<=m;col++) a[row][col]='-';
                }
                int potrebno=m/2+1,curm=m;answer=n+m-2;
                for (int row=1;row<=n;row++) a[row][m-1]=a[row][m]='+';
                potrebno-=2;curm-=2;int curr=1;
                for (int row=1;row<=n;row++)
                {
                    int number=0;
                    while (number<potrebno)
                    {
                        a[row][curr]='+';curr++;number++;
                        if (curr==curm+1) curr=1;
                    }
                }
            }
            cout<<answer<<endl;
            for (int row=1;row<=n;row++)
            {
                for (int col=1;col<=m;col++) cout<<a[row][col];
                cout<<endl;
            }
        }
    }
}

#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…