結果
問題 | No.973 余興 |
ユーザー |
![]() |
提出日時 | 2020-01-19 12:41:57 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,034 bytes |
コンパイル時間 | 1,724 ms |
コンパイル使用メモリ | 171,348 KB |
実行使用メモリ | 101,248 KB |
最終ジャッジ日時 | 2024-07-02 21:42:20 |
合計ジャッジ時間 | 18,078 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 WA * 1 |
other | AC * 27 WA * 27 |
ソースコード
#include<bits/stdc++.h> #define REP(i,n) for(int i=0,i##_len=int(n);i<i##_len;++i) #define rep(i,a,b) for(int i=int(a);i<int(b);++i) #define All(x) (x).begin(),(x).end() #define rAll(x) (x).rbegin(),(x).rend() using namespace std; using ll = long long; template<typename T> bool chmin(T &a,T b){ if(b<a){ a=b; return true; } return false; } int main(){ int N,X;cin>>N>>X; vector<int> a(N); REP(i, N) cin >> a[i]; vector<vector<int>> win(N,vector<int>(N+1,X+1)); REP(i,N) win[i][i]=X+1; rep(k,1,N) REP(i,N){ if(i-k>=0){ int res=win[i-k+1][i]+a[i-k]; if(win[i-k+1][i]==X+1) chmin(win[i-k][i],a[i-k]); else if(res<=X) chmin(win[i-k][i],res); } if(i+k<=N){ int res=win[i][i+k-1]+a[i+k]; if(win[i][i+k-1]==X+1) chmin(win[i][i+k],a[i+k]); else if(res<=X) chmin(win[i][i+k],res); } } if(win[0][N]==X+1) cout<<"B"<<endl; else cout<<"A"<<endl; }