답안 #145890

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
145890 2019-08-21T10:23:32 Z davitmarg Red-blue table (IZhO19_stones) C++17
42 / 100
56 ms 1772 KB
/*DavitMarg*/
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#include <map>
#include <unordered_map>
#include <set>
#include <queue>
#include <iomanip>
#include <stack>
#include <cassert>
#include <iterator>
#include <bitset>
#include <fstream>
#define mod 998244353ll
#define LL long long
#define LD long double
#define MP make_pair
#define PB push_back
#define all(v) v.begin(),v.end()
using namespace std;
 
int t,n,m,ans,rev;
char a[1003][1003],sum[1003];
int main()
{
    cin>>t;
    while(t--)
    {
        rev=0;
        cin>>n>>m;
        if(m<n)
        {
            swap(m,n);
            rev=1;
        }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                a[i][j]='-';
 
        int k=min(((m*(n-(n/2+1)))/(m/2+1)),n);
        ans=m+k;
        int l=0,r=m/2-m+k;

        if(k)
        {
            if(r>=0)
                for(int j=1;j<=m;j++)
                {
                    l++;
                    r++;
                    for(int i=1;i<=k;i++)
                        if(((i<l || i>r) && l<=r) || (l>r && i<l && i>r))
                            a[i][j]='+';
                    l+=max(m/2-m+k,0);
                    r+=max(m/2-m+k,0);
                    l%=k;
                    r%=k;
                }
            else
                for(int j=1;j<=m;j++)
                    for(int i=1;i<=k;i++)
                        a[i][j]='+';
        }

        
        printf("%d\n",ans);
        if(!rev)
            for(int i=1;i<=n;i++)
            {
                for(int j=1;j<=m;j++)
                    printf("%c",a[i][j]);
                printf("\n");
            }
        else
        {
            for(int j=1;j<=m;j++)
            {
                for(int i=1;i<=n;i++)
                {
                    if(a[i][j]=='+')
                        a[i][j]='-';
                    else
                        a[i][j]='+';
                    
                    printf("%c",a[i][j]);
                }
                printf("\n");
            }
        }
        
 
    }
    
    
	return 0;
}
 
/*

2
1 3
3 3

 
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 1 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 1 ms 376 KB Output is correct
3 Correct 4 ms 376 KB Output is correct
4 Incorrect 6 ms 376 KB in the table A+B is not equal to 32
# 결과 실행 시간 메모리 Grader output
1 Incorrect 56 ms 1488 KB in the table A+B is not equal to 116
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 55 ms 1400 KB Output is correct
2 Correct 47 ms 1772 KB Output is correct
3 Correct 40 ms 1660 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 1 ms 376 KB Output is correct
3 Correct 4 ms 376 KB Output is correct
4 Incorrect 6 ms 376 KB in the table A+B is not equal to 32