結果

問題 No.505 カードの数式2
ユーザー dohatsutsudohatsutsu
提出日時 2017-04-21 22:45:10
言語 C++11
(gcc 13.3.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 783 bytes
コンパイル時間 1,477 ms
コンパイル使用メモリ 158,608 KB
実行使用メモリ 6,820 KB
最終ジャッジ日時 2024-11-14 07:13:30
合計ジャッジ時間 2,233 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 29
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int N;
ll a[16];
ll mini[16];
ll maxm[16];

int main(){
  cin>>N;
  for(int i=0;i<N;i++){
    cin>>a[i];
  }
  
  mini[0]=maxm[0]=a[0];
  for(int i=1;i<N;i++){

    mini[i]=min( mini[i-1]+a[i] , mini[i-1]-a[i] );
    mini[i]=min( mini[i], mini[i-1] * a[i] );
    if(a[i])mini[i]=min( mini[i], mini[i-1] / a[i] );
    mini[i]=min( mini[i], maxm[i-1] * a[i] );
    if(a[i])mini[i]=min( mini[i], maxm[i-1] / a[i] );

    
    maxm[i]=max( maxm[i-1]+a[i] , maxm[i-1]-a[i] );
    maxm[i]=max( maxm[i], mini[i-1] * a[i] );
    if(a[i])maxm[i]=max( maxm[i], mini[i-1] / a[i] );
    maxm[i]=max( maxm[i], maxm[i-1] * a[i] );
    if(a[i])maxm[i]=max( maxm[i], maxm[i-1] / a[i] );
  }

  cout<<maxm[N-1]<<endl;
  return 0;
}
0