結果
問題 |
No.973 余興
|
ユーザー |
![]() |
提出日時 | 2020-01-18 01:04:45 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 966 bytes |
コンパイル時間 | 169 ms |
コンパイル使用メモリ | 82,240 KB |
実行使用メモリ | 272,852 KB |
最終ジャッジ日時 | 2024-06-26 04:17:48 |
合計ジャッジ時間 | 23,811 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 53 WA * 1 |
ソースコード
# coding: utf-8 # Your code here! import sys sys.setrecursionlimit(10**6) readline = sys.stdin.readline read = sys.stdin.read n,x,*a = [int(i) for i in read().split()] r = [0]*n #r[i]= iから左にどこまで伸ばせるか l = [0]*n #l[i]= iから右に... pt = res = 0 for i in range(n-1): res -= a[i] while pt < n and res+a[pt] <= x: res += a[pt] pt += 1 r[i] = pt pt,res = n-1, 0 for i in range(n-1,0,-1): res -= a[i] while pt >= 0 and res+a[pt] <= x: res += a[pt] pt -= 1 l[i] = pt+1 dp = [[0]*n for _ in range(n)] for i in range(n-1,-1,-1): j = i while j < n: if dp[i][j]: j += 1 else: #0の場合、そこは負けで、上、右に1をのばす dp[i][j] = -1 for k in range(l[i],i): dp[k][j] = 1 dp[i][j+1:r[j]] = [1]*(r[j]-(j+1)) j = r[j] if dp[0][-1] == 1: print("A") else: print("B")