結果

問題 No.973 余興
ユーザー otamay6otamay6
提出日時 2020-01-19 12:50:20
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,049 bytes
コンパイル時間 1,704 ms
コンパイル使用メモリ 171,572 KB
実行使用メモリ 101,248 KB
最終ジャッジ日時 2024-07-02 21:43:07
合計ジャッジ時間 19,288 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 52 WA * 2
権限があれば一括ダウンロードができます

ソースコード

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+1);
    REP(i, N) cin >> a[i];
    vector<vector<int>> win(N+1,vector<int>(N+1,X+1));
    REP(i,N) win[i][i+1]=X+1;
    rep(k,1,N+1) REP(i,N){
        if(i-k>=0){
            int res=win[i-k+1][i+1]+a[i-k];
            if(win[i-k+1][i+1]==X+1) chmin(win[i-k][i+1],a[i-k]);
            else if(res<=X) chmin(win[i-k][i+1],res);
        }
        if(i+k<N){
            int res=win[i][i+k]+a[i+k];
            if(win[i][i+k]==X+1) chmin(win[i][i+k+1],a[i+k]);
            else if(res<=X) chmin(win[i][i+k+1],res);
        }
    }
    if(win[0][N]==X+1) cout<<"B"<<endl;
    else cout<<"A"<<endl;
}
0