結果
問題 |
No.1017 Reiwa Sequence
|
ユーザー |
![]() |
提出日時 | 2020-04-03 22:56:18 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,603 bytes |
コンパイル時間 | 1,450 ms |
コンパイル使用メモリ | 170,028 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-03 05:27:54 |
合計ジャッジ時間 | 31,703 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 33 WA * 17 |
ソースコード
#include <bits/stdc++.h> #include <iomanip> using namespace std; #define reps(i,s,n) for(int i = s; i < n; i++) #define rep(i,n) reps(i,0,n) #define Rreps(i,n,e) for(int i = n - 1; i >= e; --i) #define Rrep(i,n) Rreps(i,n,0) #define ALL(a) a.begin(), a.end() #define fi first #define se second typedef long long ll; typedef vector<ll> vec; typedef vector<vec> mat; ll N,M,H,W,K,Q,A,B; string S; const ll MOD = 998244353; //const ll MOD = (1e+9) + 7; const ll INF = 1LL<<60; typedef pair<ll, ll> P; int ansp = -1, ansm = -1, n; bool solve = false; void dfs(int plus, int minus, int num, vec &a, int sum){ if(num == n){ if(sum == 0 && (plus != 0 || minus != 0)){ ansp = plus; ansm = minus; solve = true; } }else if(!solve){ dfs(plus | (1<<num), minus, num + 1, a, sum + a[num]); dfs(plus, minus | (1<<num), num + 1, a, sum - a[num]); dfs(plus, minus, num + 1, a, sum); } } int main() { cin>>N; /*bool det = false; if(N >= 14){ cout<<"Yes"<<endl; N = 14; det = true; }*/ vec a(N); rep(i,N) cin>>a[i]; n = min(N, 14LL); vec k(n); rep(i,n) k[i] = a[i]; dfs(0, 0, 0, k, 0); if(solve){ cout<<"Yes"<<endl; rep(i,n) { if((ansp>>i)&1) cout<<a[i]; else if((ansm>>i)&1) cout<<-a[i]; else cout<<0; i == N - 1 ? cout<<endl : cout<<' '; } reps(i, n, N) { cout<<0; i == N - 1 ? cout<<endl : cout<<' '; } }else{ cout<<"No"<<endl; } }