結果

問題 No.527 ナップサック容量問題
コンテスト
ユーザー Risen
提出日時 2026-10-25 12:27:31
言語 C#
(.NET 10.0.403 + ACL)
コンパイル:
dotnet_c
実行:
/usr/bin/dotnet_wrap
結果
WA  
実行時間 -
コード長 1,281 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 9,759 ms
コンパイル使用メモリ 172,084 KB
実行使用メモリ 53,068 KB
最終ジャッジ日時 2026-10-25 12:27:52
合計ジャッジ時間 16,465 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 36 WA * 4
権限があれば一括ダウンロードができます
コンパイルメッセージ
  復元対象のプロジェクトを決定しています...
  /home/judge/data/code/main.csproj を復元しました (263 ミリ秒)。
  main -> /home/judge/data/code/bin/Release/net10.0/main.dll
  main -> /home/judge/data/code/bin/Release/net10.0/publish/

ソースコード

diff #
raw source code

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

public static class Solution
{
    public static void Main()
    {
        var N = int.Parse(Console.ReadLine());
        var items = new (int v, int w)[N];
        for (int i = 0; i < N; i++)
        {
            var vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            items[i] = (vals[0], vals[1]);
        }
        var V = int.Parse(Console.ReadLine());

        var nap = new Dictionary<int, int> { [0] = 0 };
        foreach (var item in items)
        {
            var adds = new List<(int v, int w)>();
            foreach (var kv in nap)
            {
                var w = kv.Key + item.w;
                var v = kv.Value + item.v;
                if (!nap.TryGetValue(w, out int value) || value < v)
                {
                    adds.Add((kv.Value + item.v, kv.Key + item.w));
                }
            }
            foreach (var add in adds)
            {
                nap[add.w] = add.v;
            }
        }

        var min = Math.Max(nap.First(x => x.Value == V).Key, 1);
        var max = nap.OrderBy(x => x.Key).FirstOrDefault(x => x.Value > V).Key - 1;
        Console.WriteLine(min);
        Console.WriteLine(max == -1 ? "inf" : max);
    }
}
0