結果

問題 No.90 品物の並び替え
ユーザー 抹茶アイス抹茶アイス
提出日時 2023-07-28 11:11:43
言語 C#
(.NET 8.0.203)
結果
WA  
実行時間 -
コード長 2,110 bytes
コンパイル時間 7,350 ms
コンパイル使用メモリ 167,748 KB
実行使用メモリ 56,452 KB
最終ジャッジ日時 2024-10-05 23:44:23
合計ジャッジ時間 16,490 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 75 ms
37,372 KB
testcase_01 WA -
testcase_02 AC 74 ms
33,904 KB
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 AC 70 ms
33,904 KB
testcase_09 TLE -
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (90 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 int[n[1]][];
			for(var i= 0; i < n[1]; i++)
            {
				S[i] = Console.ReadLine().Split(' ').Select(value => int.Parse(value)).ToArray();
			}
            var A = AllPermutation(Enumerable.Range(0, n[0]-1).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].ToString())< a.IndexOf(s[1].ToString()))
                    {
                        k += 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