結果

問題 No.973 余興
ユーザー otamay6otamay6
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

#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;
}
0