Submission #290606

#TimeUsernameProblemLanguageResultExecution timeMemory
290606dantoh000Red-blue table (IZhO19_stones)C++14
100 / 100
70 ms5372 KiB
#include <bits/stdc++.h>
using namespace std;
int ans[1005][1005];
int rct[1005];
int cct[1005];
int main(){
    int tc;
    scanf("%d",&tc);
    while (tc--){
        int n,m;
        scanf("%d%d",&n,&m);
        int flag = 0;
        if (n < m){
            flag = 1;
            swap(n,m);
        }
        for (int i = 0; i <= n; i++) rct[i] = 0;
        for (int j = 0; j <= m; j++) cct[j] = 0;
        for (int i = 0; i < n; i++){
            for (int j = 0; j < m; j++) ans[i][j] = 0;
        }
        int k = 0;
        for (k = 0; k <= m; k++){
            //printf("k columns: %d, but have %d\n",k*(n - (n-1)/2),((m-1)/2) * n);
            if (k*(n - (n-1)/2) > ((m-1)/2) * n){
                k--;
                break;
            }
        }
        //printf("%d\n", k);
        for (int i = 0; i < n; i++){
            int num = (m-1)/2;
            for (int T = 0; T < k; T++){
                int j = (T+i)%k;
                if (cct[j] <= n-cct[j] && num){
                    cct[j]++;
                    num--;
                    rct[i]++;
                    ans[i][j] = 1;
                }
                else ans[i][j] = 0;
            }
            for (int T = k; T < m; T++) ans[i][T] = 0;
        }
        int sum = 0;
        for (int i = 0; i < n; i++){
            if (rct[i] < m-rct[i]) {
                //printf("row %d : %d / %d\n",i,rct[i],m);
                sum++;
            }
        }
        for (int i = 0; i < m; i++){
            if (cct[i] > n-cct[i]) {
                //printf("col %d : %d / %d\n",i,cct[i],n);
                sum++;
            }
        }
        assert(sum == k+n);
        printf("%d\n",sum);
        if (flag){
            for (int i = 0; i < m; i++){
                for (int j = 0; j < n; j++){
                    printf("%c",ans[j][i]?'+':'-');
                }
                printf("\n");
            }
        }
        else{
            for (int i = 0; i < n; i++){
                for (int j = 0; j < m; j++){
                    printf("%c",ans[i][j]?'-':'+');
                }
                printf("\n");
            }
        }



    }

}

Compilation message (stderr)

stones.cpp: In function 'int main()':
stones.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    8 |     scanf("%d",&tc);
      |     ~~~~~^~~~~~~~~~
stones.cpp:11:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   11 |         scanf("%d%d",&n,&m);
      |         ~~~~~^~~~~~~~~~~~~~
#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...