結果
| 問題 |
No.973 余興
|
| コンテスト | |
| ユーザー |
shibh308
|
| 提出日時 | 2019-12-06 01:39:18 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 651 ms / 4,000 ms |
| コード長 | 1,602 bytes |
| コンパイル時間 | 15,349 ms |
| コンパイル使用メモリ | 239,976 KB |
| 実行使用メモリ | 347,220 KB |
| 最終ジャッジ日時 | 2024-12-17 21:07:10 |
| 合計ジャッジ時間 | 33,935 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 54 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
var sc = bufio.NewScanner(os.Stdin)
func readLine() string {
sc.Scan()
return sc.Text()
}
func main() {
n_x := strings.Split(readLine(), " ")
n, _ := strconv.ParseInt(n_x[0], 10, 0)
x, _ := strconv.ParseInt(n_x[1], 10, 0)
arr := strings.Split(readLine(), " ")
a := [5000]int64{}
for i, elm := range arr {
val, _ := strconv.ParseInt(elm, 10, 0)
a[i] = val
}
left := [5000]int64{}
right := [5000]int64{}
l := int64(0)
r := int64(0)
sum := int64(0)
for l != n {
for r != n && sum+a[r] <= x {
sum += a[r]
r++
}
left[l] = r - l
sum -= a[l]
l++
}
l = n - 1
r = n - 1
sum = 0
for r >= 0 {
for l != -1 && sum+a[l] <= x {
sum += a[l]
l--
}
right[r] = r - l
sum -= a[r]
r--
}
dp_l := [5000][5001]int64{}
dp_r := [5000][5001]int64{}
for i := int64(0); i <= n; i++ {
for j := int64(0); j < n; j++ {
if i == 0 {
dp_l[j][i] = 0
dp_r[j][i] = 0
continue
}
l = j
r = j + i - 1
if r >= n {
break
}
cnt := left[l]
if cnt > i-1 {
cnt = i - 1
}
x := dp_r[r][i-1] - dp_r[r][i-cnt-1]
if x != cnt {
dp_l[l][i] = dp_l[l][i-1] + 1
dp_r[r][i] = dp_r[r][i-1] + 1
continue
}
cnt = right[r]
if cnt > i-1 {
cnt = i - 1
}
x = dp_l[l][i-1] - dp_l[l][i-cnt-1]
if x != cnt {
dp_l[l][i] = dp_l[l][i-1] + 1
dp_r[r][i] = dp_r[r][i-1] + 1
continue
}
dp_l[l][i] = dp_l[l][i-1]
dp_r[r][i] = dp_r[r][i-1]
}
}
if dp_l[0][n] == dp_l[0][n-1] {
fmt.Println("B")
} else {
fmt.Println("A")
}
}
shibh308