結果
| 問題 |
No.505 カードの数式2
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-02-03 23:55:50 |
| 言語 | Nim (2.2.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,016 bytes |
| コンパイル時間 | 2,155 ms |
| コンパイル使用メモリ | 60,980 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-01 11:19:15 |
| 合計ジャッジ時間 | 3,089 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 29 |
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 8) Warning: imported and not used: 'sequtils' [UnusedImport]
ソースコード
import sequtils
template times*(n:int,body) = (for _ in 0..<n: body)
proc printf(formatstr: cstring){.header: "<stdio.h>", varargs.}
template `max=`*(x,y) = x = max(x,y)
template `min=`*(x,y) = x = min(x,y)
proc getchar_unlocked():char {. importc:"getchar_unlocked",header: "<stdio.h>" .}
proc scan(): int =
var minus = false
block:
let k = getchar_unlocked()
if k == '-' : minus = true
else: result = 10 * result + k.ord - '0'.ord
while true:
let k = getchar_unlocked()
if k < '0' or k > '9': break
result = 10 * result + k.ord - '0'.ord
if minus: result *= -1
let n = scan()
var ansMin = scan()
var ansMax = ansMin
(n-1).times:
let x = scan()
let xabs = x.abs()
var plus = ansMax + xabs
var nextMin = plus
var nextMax = plus
template check(i:int) =
nextMin .min= i
nextMax .max= i
check ansMin - xabs
check ansMax * x
check ansMin * x
if x > 1:
check ansMax div x
check ansMin div x
ansMin = nextMin
ansMax = nextMax
printf("%ld\n",ansMax)