結果
| 問題 |
No.370 道路の掃除
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-01-23 20:56:26 |
| 言語 | Nim (2.2.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 697 bytes |
| コンパイル時間 | 2,505 ms |
| コンパイル使用メモリ | 62,256 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-01 10:38:40 |
| 合計ジャッジ時間 | 3,733 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 34 |
ソースコード
import sequtils,algorithm
template `min=`*(x,y) = x = min(x,y)
proc getchar_unlocked():char {. importc:"getchar_unlocked",header: "<stdio.h>" .}
proc scan(): int =
var minus = false
while true:
let k = getchar_unlocked()
if k == '-' : minus = true
elif k < '0' or k > '9': break
else: result = 10 * result + k.ord - '0'.ord
if minus: result *= -1
let n = scan()
let m = scan()
let D = newSeqWith(m,scan()).sorted(cmp)
if m == 1:
echo D[0].abs
quit 0
var ans = int.high
for x in 0..<m:
let y = x + n - 1
if y >= m : break
if D[y] <= 0: ans .min= -D[x]
elif D[x] >= 0 : ans .min= D[y]
else:
ans .min= -D[x] + D[y] * 2
ans .min= -D[x] * 2 + D[y]
echo ans