結果
| 問題 |
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"
6soukiti29