結果
問題 |
No.1017 Reiwa Sequence
|
ユーザー |
![]() |
提出日時 | 2023-03-02 17:59:14 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 488 ms / 2,000 ms |
コード長 | 1,515 bytes |
コンパイル時間 | 3,927 ms |
コンパイル使用メモリ | 260,364 KB |
最終ジャッジ日時 | 2025-02-11 01:09:16 |
ジャッジサーバーID (参考情報) |
judge4 / judge6 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 50 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; using ll=long long; using ld=long double; ld pie=3.14159265359; ll inf=10000000000000001; ll mod=1000000007; int main(){ ll n; cin >> n; vector<ll>a(n); for (ll i = 0; i < n; i++) { cin >> a[i]; } bool ok=false; ll x=min(n,(ll)23); vector<vector<vector<ll>>>memo(4000000); vector<ll>two(25,1); for (ll i = 1; i < two.size(); i++) { two[i]=two[i-1]*2; } ll ans=-1; for (ll i = 1; i < two[x]; i++) { ll y=0; vector<ll>b; for (ll j = 0; j < x; j++) { if (two[j]&i) { y+=a[j]; b.push_back(j); } } if (memo[y].size()>=1) { ok=true; ans=y; memo[y].push_back(b); break; }else{ memo[y].push_back(b); } } if (ans==-1) { cout << "No" << endl; return 0; } map<ll,ll>b,c; for (ll i = 0; i < memo[ans][0].size(); i++) { b[memo[ans][0][i]]+=1; } for (ll i = 0; i < memo[ans][1].size(); i++) { c[memo[ans][1][i]]+=1; } cout << "Yes" << endl; for (ll i = 0; i < n; i++) { if (b[i]>=1) { cout << a[i] << ' '; }else if (c[i]>=1) { cout << -a[i] << ' '; }else{ cout << 0 << ' '; } } }