結果

問題 No.398 ハーフパイプ(2)
ユーザー mbanmban
提出日時 2016-11-08 18:48:40
言語 C#(csc)
(csc 3.9.0)
結果
MLE  
実行時間 -
コード長 1,694 bytes
コンパイル時間 1,018 ms
コンパイル使用メモリ 105,600 KB
実行使用メモリ 348,160 KB
最終ジャッジ日時 2024-05-03 23:44:07
合計ジャッジ時間 26,684 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 MLE -
testcase_01 MLE -
testcase_02 MLE -
testcase_03 MLE -
testcase_04 MLE -
testcase_05 MLE -
testcase_06 MLE -
testcase_07 MLE -
testcase_08 MLE -
testcase_09 MLE -
testcase_10 MLE -
testcase_11 MLE -
testcase_12 MLE -
testcase_13 MLE -
testcase_14 MLE -
testcase_15 MLE -
testcase_16 MLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Collections.Generic;
using System.Linq;

class Magatro
{
    static double X = double.Parse(Console.ReadLine());
    static void Main()
    {
        int goukei = (int)(X * 4);
        long[][][][] dp = new long[6][][][];
        for(int i = 0; i < 6; i++)
        {
            dp[i] = new long[101][][];
            for(int j = 0; j <= 100; j++)
            {
                dp[i][j] = new long[101][];
                for(int q = 0; q <= 100; q++)
                {
                    dp[i][j][q] = new long[601];
                }
            }
        }
        
        //i max,j min,k sum
        for (int i = 0; i <= 100; i++)
        {
            dp[0][ i][ i][i] = 1;
        }
        for (int i = 1; i < 6; i++)
        {
            for (int min = 0; min <= 100; min++)
            {
                for (int max = min; max <= 100; max++)
                {
                    for (int sum = i * min; sum <= max * i; sum++)
                    {
                        if (dp[i - 1][ min][ max][ sum] == 0)
                        {
                            continue;
                        }
                        for (int j = 0; j <= 100; j++)
                        {
                            dp[i][ Math.Min(j, min)][ Math.Max(j, max)][ sum + j] += dp[i - 1][ min][ max][ sum];

                        }
                    }
                }
            }
        }
        long ans = 0;
        for(int min = 0; min <= 100; min++)
        {
            for(int max = min; max <= 100; max++)
            {
                ans += dp[5][ min][ max][ goukei + min + max];
            }
        }
        Console.WriteLine(ans);
    }
}
0