結果
問題 | No.1017 Reiwa Sequence |
ユーザー |
|
提出日時 | 2020-04-06 21:29:20 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 787 ms / 2,000 ms |
コード長 | 1,158 bytes |
コンパイル時間 | 1,956 ms |
コンパイル使用メモリ | 179,428 KB |
実行使用メモリ | 69,248 KB |
最終ジャッジ日時 | 2024-07-03 08:37:42 |
合計ジャッジ時間 | 46,882 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<n;i++) using namespace std; using ll = long long ; using P = pair<int,int> ; const int INF = 1e9; const int MOD = 1000000007; int main(){ int n; cin >> n; vector<int> a(n); rep(i,n) cin >> a[i]; int k = min(n,22); vector<bool> ans; int s_sum; bool ok = false; map<int,vector<bool>> sum; rep(bit,1<<k){ int s = 0; vector<bool> flg(k,false); rep(i,k){ if(bit >> i & 1){ s += a[i]; flg[i] = true; } } if(sum.find(s) == sum.end()) sum[s] = flg; else{ ans = flg; s_sum = s; ok = true; break; } } if(!ok){ cout << "No" << endl; return 0; } else{ cout << "Yes" << endl; } rep(i,k){ if(ans[i] && sum[s_sum][i]) a[i] = 0; else if(ans[i]); else if(sum[s_sum][i]) a[i] = -a[i]; else a[i] = 0; } if(k != n){ for(int i=k;i<n;i++) a[i] = 0; } rep(i,n) cout << a[i] << " "; cout << endl; return 0; }