結果
問題 | No.209 Longest Mountain Subsequence |
ユーザー | titia |
提出日時 | 2022-06-27 00:59:48 |
言語 | Kotlin (1.9.23) |
結果 |
AC
|
実行時間 | 876 ms / 2,000 ms |
コード長 | 1,135 bytes |
コンパイル時間 | 14,381 ms |
コンパイル使用メモリ | 453,008 KB |
実行使用メモリ | 62,912 KB |
最終ジャッジ日時 | 2024-11-17 17:55:00 |
合計ジャッジ時間 | 19,741 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 670 ms
59,140 KB |
testcase_01 | AC | 535 ms
58,472 KB |
testcase_02 | AC | 525 ms
59,820 KB |
testcase_03 | AC | 865 ms
62,820 KB |
testcase_04 | AC | 876 ms
62,912 KB |
testcase_05 | AC | 442 ms
56,540 KB |
ソースコード
fun main(){ val t=readLine()!!.toInt() for (tests in 0..t-1) { val N = readLine()!!.toInt() val A = readLine()!!.split(' ').map { it.toInt() } if (N == 1) { println(1) continue } val DP = Array(N) { IntArray(N){2} } for (i in 0..N - 1) { val a = A[i] for (j in 0..i - 1) { val b = A[j] for (k in j + 1..i - 1) { val c = A[k] if (b < c && c < a && c - b < a - c) { DP[k][i] = maxOf(DP[k][i], DP[j][k] + 1) } if (b < c && c > a) { DP[k][i] = maxOf(DP[k][i], DP[j][k] + 1) } if (b > c && c > a && b - c > c - a) { DP[k][i] = maxOf(DP[k][i], DP[j][k] + 1) } } } } var ANS = 1 for (i in 0..N - 1) { for (j in 0..N - 1) { ANS = maxOf(ANS, DP[i][j]) } } println(ANS) } }