くれなゐの雑記

例を上げて 自分で手を動かして学習できる入門記事を多めに書いています

Juliaで競技プログラミング(もうしない, ABC061)

Motivation

研究でちょっと触っているのでABCで使ってみた

解説は色々みたらわかるので割愛

A問題

http://abc061.contest.atcoder.jp/tasks/abc061_a

A,B,C = parse.(split(readline(STDIN)))
if A <= C && C <= B
    println("Yes")
else
    println("No")
end

http://abc061.contest.atcoder.jp/submissions/1283186

B問題

http://abc061.contest.atcoder.jp/tasks/abc061_b

N,M = parse.(split(readline(STDIN))) # ブロードキャスト 参考: http://bicycle1885.hatenablog.com/entry/2016/12/13/205646
count = zeros(Int64, N)
 
for i in 1:M
    a,b = parse.(split(readline(STDIN)))
    count[a] += 1
    count[b] += 1
end
 
for value in count
    println("$value")
end

http://abc061.contest.atcoder.jp/submissions/1284568

C問題 (TLE)

mapのかわりにdictを使ってみたがTLEしてしまった.

http://abc061.contest.atcoder.jp/tasks/abc061_c

N,M = split(readline(STDIN))
N = parse(N)
M = parse(M)
 
dict = Dict{Int64,Int64}()
 
for i in 1:N
    a,b = split(readline(STDIN))
    a = parse(a)
    b = parse(b)
    dict[a] = get(dict, a, 0)
    dict[a] += b
end
 
 
for key in sort(collect(keys(dict)))
    M -= dict[key]
    if M <= 0
        println("$key")
        break
    end
end

http://abc061.contest.atcoder.jp/submissions/1285715

所感

A問題すらすごい時間がかかって謎だった C問題は解法はO(NlogN)だしWAだとしてもTLEはしないはずなんだけど… 原因が分かるまで競技プログラミングでjuliaは封印します.