結果

問題 No.90 品物の並び替え
ユーザー 抹茶アイス抹茶アイス
提出日時 2023-07-28 16:30:53
言語 C#
(.NET 8.0.203)
結果
TLE  
実行時間 -
コード長 2,128 bytes
コンパイル時間 9,104 ms
コンパイル使用メモリ 169,052 KB
実行使用メモリ 139,208 KB
最終ジャッジ日時 2024-04-16 00:47:31
合計ジャッジ時間 30,361 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 79 ms
37,468 KB
testcase_01 AC 4,466 ms
139,208 KB
testcase_02 AC 78 ms
33,792 KB
testcase_03 AC 332 ms
36,952 KB
testcase_04 AC 537 ms
36,956 KB
testcase_05 TLE -
testcase_06 AC 3,532 ms
51,928 KB
testcase_07 AC 136 ms
34,816 KB
testcase_08 AC 79 ms
33,624 KB
testcase_09 TLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (101 ms)。
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
  main -> /home/judge/data/code/bin/Release/net8.0/main.dll
  main -> /home/judge/data/code/bin/Release/net8.0/publish/

ソースコード

diff #

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

namespace yukicoder
{
    public class Program
    {
        public static void Main()
        {
            var n = Console.ReadLine().Split(' ').Select(value => int.Parse(value)).ToArray();
            var S = new string[n[1]][];
            for (var i = 0; i < n[1]; i++)
            {
                S[i] = Console.ReadLine().Split(' ');
            }
            var A = AllPermutation(Enumerable.Range(0, n[0]).ToArray());
            var m = 0;
            foreach (var aa in A)
            {
                var a = String.Join("", aa);
                var k = 0;
                foreach (var s in S)
                {
                    if (a.IndexOf(s[0]) < a.IndexOf(s[1]))
                    {
                        k += int.Parse(s[2]);
                    }
                }
                m = Math.Max(m, k);
            }
            Console.WriteLine(m);
        }
        static List<T[]> AllPermutation<T>(params T[] array) where T : IComparable
        {
            var a = new List<T>(array).ToArray();
            var res = new List<T[]>();
            res.Add(new List<T>(a).ToArray());
            var n = a.Length;
            var next = true;
            while (next)
            {
                next = false;

                // 1
                int i;
                for (i = n - 2; i >= 0; i--)
                {
                    if (a[i].CompareTo(a[i + 1]) < 0) break;
                }
                // 2
                if (i < 0) break;

                // 3
                var j = n;
                do
                {
                    j--;
                } while (a[i].CompareTo(a[j]) > 0);

                if (a[i].CompareTo(a[j]) < 0)
                {
                    // 4
                    var tmp = a[i];
                    a[i] = a[j];
                    a[j] = tmp;
                    Array.Reverse(a, i + 1, n - i - 1);
                    res.Add(new List<T>(a).ToArray());
                    next = true;
                }
            }
            return res;
        }
    }
}
0