結果
| 問題 | No.366 ロボットソート | 
| コンテスト | |
| ユーザー |  t8m8⛄️ | 
| 提出日時 | 2016-05-05 22:37:53 | 
| 言語 | Nim (2.2.0) | 
| 結果 | 
                                CE
                                 
                            (最新) 
                                AC
                                 
                            (最初) | 
| 実行時間 | - | 
| コード長 | 1,015 bytes | 
| コンパイル時間 | 961 ms | 
| コンパイル使用メモリ | 66,532 KB | 
| 最終ジャッジ日時 | 2024-11-14 19:43:13 | 
| 合計ジャッジ時間 | 1,550 ms | 
| ジャッジサーバーID (参考情報) | judge2 / judge4 | 
(要ログイン)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。
            
            
            
            
            ただし、clay言語の場合は開発者のデバッグのため、公開されます。
コンパイルメッセージ
/home/judge/data/code/Main.nim(1, 39) Warning: Use the new 'sugar' module instead; future is deprecated [Deprecated] /home/judge/data/code/Main.nim(43, 21) Error: undeclared identifier: 'lc'
ソースコード
import strutils, sequtils, algorithm, future
let
    input = stdin.readline.split.map(parseint)
    (n, k) = (input[0], input[1])
var
    a = stdin.readline.split.map(parseint)
    aIdx : seq[int] = @[]
    bit : seq[int]
proc sum(idx : int) : int =
    var i = idx
    result = 0
    while i > 0 :
        result += bit[i]
        i -= i and -i
proc add(idx, val : int) = 
    var i = idx
    while i <= n :
        bit[i] += val
        i += i and -i
proc isOk : bool =
    let b = a.sorted(cmp[int])
    for i, v in a :
        var idx = b.lowerbound(v)
        aIdx.add(idx + 1)
        if (idx - i).abs mod k != 0 :
            return false
    return true
proc solve(b : seq[int]) : int =
    bit = repeat(0, 2*n+1)
    result = 0
    for i, v in b :
        result += i - sum(v)
        add(v, 1)
if isOk() :
    var ans = 0
    for m in 0..k-1 :
        var b = map(lc[x | (x <- 0..a.len-1, x mod k == m), int], proc(x : int) : int = aIdx[x])
        ans += b.solve
    ans.echo
else :
    "-1".echo 
            
            
            
        