結果
問題 |
No.505 カードの数式2
|
ユーザー |
![]() |
提出日時 | 2017-05-18 02:43:39 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 633 bytes |
コンパイル時間 | 851 ms |
コンパイル使用メモリ | 75,692 KB |
実行使用メモリ | 6,824 KB |
最終ジャッジ日時 | 2024-11-14 07:25:42 |
合計ジャッジ時間 | 1,600 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 29 |
ソースコード
#include <cstdio> #include <cstring> #include <random> #include <vector> #include <algorithm> #include <array> #include <functional> using namespace std; int main(){ int n; int _=scanf("%d",&n); vector<int64_t> a; for(int i=0;i<n;i++){ int t; _=scanf("%d",&t); a.push_back(t); } array<int64_t,2> s; s[0]=s[1]=a[0]; for(int i=1;i<n;i++){ vector<int64_t> t={s[0]+a[i],s[0]-a[i],s[0]*a[i],s[1]+a[i],s[1]-a[i],s[1]*a[i]}; if(a[i]){ t.push_back(s[0]/a[i]); t.push_back(s[1]/a[i]); } auto u=minmax_element(t.begin(),t.end()); s[0]=*u.first; s[1]=*u.second; } printf("%ld\n",max(s[0],s[1])); return 0; }