結果
| 問題 |
No.875 Range Mindex Query
|
| コンテスト | |
| ユーザー |
yosutecon
|
| 提出日時 | 2020-01-10 13:09:22 |
| 言語 | Julia (2.11.2) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 939 bytes |
| コンパイル時間 | 128 ms |
| コンパイル使用メモリ | 6,948 KB |
| 実行使用メモリ | 287,736 KB |
| 最終ジャッジ日時 | 2024-10-01 17:25:39 |
| 合計ジャッジ時間 | 10,611 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | WA * 1 |
| other | WA * 18 |
ソースコード
parseInt(x) = parse(Int, x)
parseMap(x::Array{SubString{String},1}) = map(parseInt, x)
function refresh(st::Array{Int,1},lt::Array{Int,1},x)
n = length(st)
rt = n>>1
if x<=rt
st[x<<1] += lt[x]
st[x<<1+1] += lt[x]
lt[x] = 0
end
end
function main()
n,q = readline() |> split |> parseMap
a = readline() |> split |> parseMap
k = 0
while 2^k<n
k += 1
end
rt = 2^k-1
st = zeros(Int,2^(k+1)-1)
for i in 1:n
st[rt+i]=a[i]
end
for i in rt:-1:1
st[i]=min(st[i<<1],st[i<<1+1])
end
for iter in 1:q
f,ll,rr = readline() |> split |> parseMap
if f==1
tmp = st[rt+ll]
st[rt+ll]=st[rt+rr]
st[rt+rr]=tmp
else
rp = Int[]
m = 10^18
for i in k:-1:0
l = (rt+ll)>>i
r = (rt+rr)>>i
if r-l>1&&i>0
if l%2==0
m=min(m,st[l+1])
end
if r%2==1
m=min(m,st[r-1])
end
elseif i==0
m=min(m,st[l])
m=min(m,st[r])
end
end
println(m)
end
end
end
main()
yosutecon