結果

問題 No.45 回転寿司
ユーザー mannshi222jpmannshi222jp
提出日時 2022-02-08 22:25:25
言語 C
(gcc 12.3.0)
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 1,081 bytes
コンパイル時間 513 ms
コンパイル使用メモリ 28,504 KB
実行使用メモリ 4,384 KB
最終ジャッジ日時 2023-09-05 22:55:29
合計ジャッジ時間 2,822 ms
ジャッジサーバーID
(参考情報)
judge12 / judge11
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 0 ms
4,376 KB
testcase_01 AC 0 ms
4,376 KB
testcase_02 AC 1 ms
4,380 KB
testcase_03 AC 1 ms
4,380 KB
testcase_04 AC 0 ms
4,380 KB
testcase_05 AC 1 ms
4,380 KB
testcase_06 AC 0 ms
4,380 KB
testcase_07 AC 1 ms
4,376 KB
testcase_08 AC 0 ms
4,376 KB
testcase_09 AC 1 ms
4,384 KB
testcase_10 AC 1 ms
4,384 KB
testcase_11 AC 0 ms
4,380 KB
testcase_12 AC 0 ms
4,380 KB
testcase_13 AC 1 ms
4,376 KB
testcase_14 AC 1 ms
4,376 KB
testcase_15 AC 1 ms
4,376 KB
testcase_16 AC 0 ms
4,376 KB
testcase_17 AC 0 ms
4,380 KB
testcase_18 AC 1 ms
4,380 KB
testcase_19 AC 0 ms
4,376 KB
testcase_20 AC 1 ms
4,380 KB
testcase_21 AC 1 ms
4,376 KB
testcase_22 AC 0 ms
4,376 KB
testcase_23 AC 1 ms
4,376 KB
testcase_24 AC 1 ms
4,376 KB
testcase_25 AC 1 ms
4,380 KB
testcase_26 AC 0 ms
4,380 KB
testcase_27 AC 1 ms
4,380 KB
testcase_28 AC 1 ms
4,380 KB
testcase_29 AC 0 ms
4,380 KB
testcase_30 AC 1 ms
4,376 KB
testcase_31 AC 0 ms
4,380 KB
testcase_32 AC 1 ms
4,380 KB
testcase_33 AC 1 ms
4,380 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <stdio.h>
#include <stdbool.h>

int max;

int manpuku( int *s, int num, int N );

int memo[1000];

int main()
{
        int N;
        int s[1000];

        for( int i = 0; i < 1000; i++ ) {
                memo[i]  = 0;
        }

        scanf( "%d\n", &N );
        for( int i = 0; i < N -1; i++ ) {
                scanf( "%d ", s + i );
        }
        scanf( "%d\n", s + N -1 );

        printf("%d\n", manpuku( s, 0, N ) );
        return 0;
}

int manpuku( int *s, int num, int N )
{
        int tmp1, tmp2, tmp3, tmp4;
        int a, b;
        tmp1 = tmp2 = tmp3 = tmp4 = a = b = 0;

        if( memo[num] != 0 ) {
                return memo[num];
        }

        if( num >= N ) {
                return 0;
        }

        tmp1 = s[num] + manpuku( s, num+2, N );
        tmp2 = s[num] + manpuku( s, num+3, N );
        tmp3 =          manpuku( s, num+1, N );
        tmp4 =          manpuku( s, num+2, N );

        a = tmp1 < tmp2 ? tmp2 : tmp1;
        b = tmp3 < tmp4 ? tmp4 : tmp3;

        memo[num] =  a  < b ? b : a;

        return memo[num];

}
0