結果

問題 No.1083 余りの余り
ユーザー tatt61880
提出日時 2021-06-19 09:04:35
言語 Kuin
(KuinC++ v.2021.9.17)
結果
TLE  
実行時間 -
コード長 979 bytes
コンパイル時間 2,191 ms
コンパイル使用メモリ 146,932 KB
実行使用メモリ 10,784 KB
最終ジャッジ日時 2024-09-16 12:35:58
合計ジャッジ時間 7,555 ms
ジャッジサーバーID
(参考情報)
judge6 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 2 TLE * 1 -- * 28
権限があれば一括ダウンロードができます

ソースコード

diff #

func main()
	var n: int :: cui@inputInt()
	var k: int :: cui@inputInt()
	var a: []int :: #[n]int
	for i(0, n - 1)
		do a[i] :: cui@inputInt()
	end for
	
	var idxs: []int :: #[n]int
	for i(0, n - 1)
		do idxs[i] :: i
	end for
	
	var ans: int :: 0
	while(@nextPermutation(idxs), skip)
		var val: int :: k
		for i(0, n - 1)
			do val :% a[idxs[i]]
		end for
		do ans :: [ans, val].max()
	end while
	do cui@print("\{ans}\n")
end func

func nextPermutation(arr: []int): bool
	var len: int :: ^arr
	var left: int :: len - 2
	while(left >= 0 & arr[left] >= arr[left + 1])
		do left :- 1
	end while
	if(left < 0)
		ret false
	end if
	var right: int :: len - 1
	while(arr[left] >= arr[right])
		do right :- 1
	end while
	var tmp: int :: arr[left]
	do arr[left] :: arr[right]
	do arr[right] :: tmp
	do left :+ 1
	do right :: len - 1
	while(left < right)
		do tmp :: arr[left]
		do arr[left] :: arr[right]
		do arr[right] :: tmp
		do left :+ 1
		do right :- 1
	end while
	ret true
end func
0