結果

問題 No.45 回転寿司
ユーザー mannshi222jp
提出日時 2022-02-08 22:25:25
言語 C
(gcc 13.3.0)
結果
AC  
実行時間 1 ms / 5,000 ms
コード長 1,081 bytes
コンパイル時間 268 ms
コンパイル使用メモリ 29,440 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-06-23 18:17:12
合計ジャッジ時間 1,267 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

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