結果
| 問題 | No.527 ナップサック容量問題 | 
| コンテスト | |
| ユーザー |  6soukiti29 | 
| 提出日時 | 2017-06-21 22:59:07 | 
| 言語 | Nim (2.2.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 145 ms / 2,000 ms | 
| コード長 | 886 bytes | 
| コンパイル時間 | 3,309 ms | 
| コンパイル使用メモリ | 66,892 KB | 
| 実行使用メモリ | 5,376 KB | 
| 最終ジャッジ日時 | 2024-06-30 01:27:57 | 
| 合計ジャッジ時間 | 6,488 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 37 | 
ソースコード
import sequtils,strutils,algorithm
let N = readline(stdin).parseInt
type
    item = tuple[value : int, weight : int]
var
    nimotu : item
    weights = newSeqWith(1,0)
    A : array[1_000_000,int]
    w2 : seq[int]
for n in 0..<N:
    let L = readline(stdin).split.map(parseInt)
    nimotu = (value : L[0],weight : L[1])
    w2 = @[]
    for w in reversed(weights):
        if A[nimotu.weight + w] == 0:
            w2.add(nimotu.weight + w)
            A[nimotu.weight + w] = nimotu.value + A[w]
        elif A[nimotu.weight + w] < nimotu.value + A[w]:
            A[nimotu.weight + w] = nimotu.value + A[w]
    for wadd in w2:
        weights.insert(wadd,weights.lowerBound(wadd))
let V = readline(stdin).parseInt
var l,r : int
for i,num in A:
    if l == 0 and num == V:
        l = i
    if num > V:
        r = i - 1
        break
echo l
if r > 0:
    echo r
else:
    echo "inf"
            
            
            
        