Submission #4330827
Source Code Expand
package main import ( "fmt" ) func Max(x, y int) int { if x < y { return y } return x } func main() { var A, B, tmp int fmt.Scan(&A) fmt.Scan(&B) var a, b []int dp := make([][][]int, A+1) for i:=0; i<A+1; i++{ dp[i] = make([][]int, B+1) for j:=0; j<B+1; j++{ dp[i][j] = make([]int, 2) } } for _a:=0; _a<A; _a++{ fmt.Scan(&tmp) a = append(a, tmp) } for _a:=0; _a<A; _a++{ dp[_a+1][0][0] = a[A-_a-1] + dp[_a][0][1] dp[_a+1][0][1] = dp[_a][0][0] } for _b:=0; _b<B; _b++{ fmt.Scan(&tmp) b = append(b, tmp) } for _b:=0; _b<B; _b++{ dp[0][_b+1][0] = b[B-_b-1] + dp[0][_b][1] dp[0][_b+1][1] = dp[0][_b][0] } for _a := range(a) { for _b := range(b) { dp[_a+1][_b+1][0] = Max(dp[_a][_b+1][1] + a[A-_a-1], dp[_a+1][_b][1] + b[B-_b-1]) sum := 0 for i:=A-_a-1; i<A; i++ { sum += a[i] } for i:=B-_b-1; i<B; i++ { sum += b[i] } dp[_a+1][_b+1][1] = sum - dp[_a+1][_b+1][0] } } fmt.Println(dp[A][B][0]) }
Submission Info
Submission Time | |
---|---|
Task | B - ゲーム |
User | Matts966 |
Language | Go (1.6) |
Score | 3 |
Code Size | 1062 Byte |
Status | AC |
Exec Time | 1168 ms |
Memory | 41984 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 3 / 3 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 1 ms | 512 KB |
01 | AC | 699 ms | 29696 KB |
02 | AC | 1168 ms | 41984 KB |
90 | AC | 1 ms | 512 KB |
91 | AC | 1 ms | 512 KB |