結果
| 問題 |
No.1017 Reiwa Sequence
|
| ユーザー |
IKyopro
|
| 提出日時 | 2020-04-03 23:00:07 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 444 ms / 2,000 ms |
| コード長 | 1,722 bytes |
| コンパイル時間 | 3,374 ms |
| コンパイル使用メモリ | 202,588 KB |
| 最終ジャッジ日時 | 2025-01-09 13:34:47 |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 50 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <class T, class U> using Pa = pair<T, U>;
template <class T> using vec = vector<T>;
template <class T> using vvec = vector<vec<T>>;
int main(){
cin.tie(0);
ios::sync_with_stdio(false);
int N;
cin >> N;
vec<int> A(N);
int ma = 150000;
vec<int> cnt(ma+1);
for(int i=0;i<N;i++){
cin >> A[i];
cnt[A[i]]++;
}
int val = -1;
for(int i=1;i<=ma;i++) if(cnt[i]>=2){
val = i;
break;
}
if(val!=-1){
int c = 2;
cout << "Yes\n";
for(int i=0;i<N;i++){
if(A[i]==val && c==2){
cout << A[i];
c--;
}else if(A[i]==val && c==1){
cout << -A[i];
c--;
}else cout << 0;
cout << (i!=N-1? " ":"\n");
}
return 0;
}
vec<int> B;
for(int i=0;i<min(N,30);i++) B.push_back(A[i]);
unordered_map<int,vec<int>> mp;
int n = B.size();
for(int S=0;S<(1<<n);S++){
int sum = 0;
for(int i=0;i<n;i++){
if(S>>i&1) sum += B[i];
}
mp[sum].push_back(S);
if(mp[sum].size()>=2) break;
}
bool ok = false;
vec<int> ans(N);
for(auto& x:mp) if(x.second.size()>=2){
ok = true;
vec<int> v = x.second;
int S = v[0],T = v[1];
int U = S^T;
for(int i=0;i<n;i++){
if((S>>i&1) && (U>>i&1)) ans[i] = 1;
if((T>>i&1) && (U>>i&1)) ans[i] = -1;
}
break;
}
if(!ok) cout << "No\n";
else{
cout << "Yes\n";
for(int i=0;i<N;i++) cout << A[i]*ans[i] << (i!=N-1? " ":"\n");
}
}
IKyopro