結果

問題 No.359 門松行列
ユーザー yfujita0929yfujita0929
提出日時 2016-04-18 01:10:23
言語 C90
(gcc 11.4.0)
結果
WA  
実行時間 -
コード長 2,481 bytes
コンパイル時間 223 ms
コンパイル使用メモリ 23,424 KB
実行使用メモリ 13,640 KB
最終ジャッジ日時 2024-10-04 12:46:30
合計ジャッジ時間 6,278 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 0 ms
13,640 KB
testcase_01 AC 0 ms
6,816 KB
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 TLE -
testcase_12 -- -
testcase_13 -- -
testcase_14 -- -
testcase_15 -- -
testcase_16 -- -
権限があれば一括ダウンロードができます
コンパイルメッセージ
main.c: In function ‘main’:
main.c:21:5: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   21 |     scanf("%d", &t);
      |     ^~~~~~~~~~~~~~~
main.c:24:9: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   24 |         scanf("%d", &len);
      |         ^~~~~~~~~~~~~~~~~
main.c:26:13: warning: ignoring return value of ‘scanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
   26 |             scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ソースコード

diff #

#include <stdio.h>
#include <stdlib.h>

#define V_SIZE 3
#define H_SIZE 3

int simulate(int len, int **arr);
int max(int a, int b, int c);
int min(int a, int b, int c);
int isKadomatsu(int a, int b, int c);

int main(void)
{
    int t, len, **a, idx, i, j;
    
    a = (int**)calloc(sizeof(int*), V_SIZE);
    for(idx = 0; idx < V_SIZE; idx++) {
       a[idx] = (int*)calloc(sizeof(int), H_SIZE); 
    }
    
    scanf("%d", &t);
    
    for(idx = 0; idx < t; idx++) {
        scanf("%d", &len);
        for(i = 0; i < V_SIZE; i++) {
            scanf("%d %d %d", &a[i][0], &a[i][1], &a[i][2]);
        }
        
        printf("%d\n", simulate(len, a));
    }
    
    /*
    for(i = 0; i < V_SIZE; i++) {
        for(j = 0; j < H_SIZE; j++) {
            printf("%d ", a[i][j]);
        }
        printf("\n");
    }
    */
    
    return 0;
}

int simulate(int len, int **arr)
{
    int i, j, zero[2][2], cnt=0, ret=0;
    
    for(i = 0; i < V_SIZE; i++) {
        for(j = 0; j < H_SIZE; j++) {
            if(arr[i][j] == 0) {
                zero[cnt][0] = i;
                zero[cnt][1] = j;
                cnt++;
            }
        }
    }
    
    for(i = 1; i < (len-1); i++) {
        cnt = 0;
        arr[(zero[0][0])][(zero[0][1])] = i;
        arr[(zero[1][0])][(zero[1][1])] = (len - i);
        if(isKadomatsu(arr[0][0], arr[1][1], arr[2][2]) && isKadomatsu(arr[0][2], arr[1][1], arr[2][0])) {
            for(j = 0; j < V_SIZE; j++) {
                if(isKadomatsu(arr[j][0], arr[j][1], arr[j][2]) && isKadomatsu(arr[0][j], arr[1][j], arr[2][j])) {
                    cnt++;
                }
            }
            if(cnt == 3) {
                ret++;
            }
        }
    }
    
    return ret;
}

int max(int a, int b, int c)
{
    if(a > b) {
        if(a > c) {
            return a;
        }
        else {
            return c;
        }
    }
    else {
        if(b > c) {
            return b;
        }
        else {
            return c;
        }
    }
}

int min(int a, int b, int c)
{
    if(a > b) {
        if(b > c) {
            return c;
        }
        else {
            return b;
        }
    }
    else {
        if(a > c) {
            return c;
        }
        else {
            return a;
        }
    }
}

int isKadomatsu(int a, int b, int c)
{
    if (a == b || b == c || c == a) {
        return 0;
    }
    
    if (max(a, b, c) == b || min(a, b, c) == b) {
        return 1;
    }
    
    return 0;
}
0