結果
問題 | No.2806 Cornflake Man |
ユーザー |
|
提出日時 | 2024-07-09 21:20:58 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 281 ms / 2,000 ms |
コード長 | 1,556 bytes |
コンパイル時間 | 2,361 ms |
コンパイル使用メモリ | 215,068 KB |
最終ジャッジ日時 | 2025-02-22 02:38:53 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <bits/stdc++.h>#pragma GCC target("avx2")#pragma GCC optimize("O3")#pragma GCC optimize("unroll-loops")using namespace std;using ll = long long;const ll mod = 998244353;#define fi first#define se second#define rep(i,n) for(ll i=0;i<n;i++)#define all(x) x.begin(),x.end()#define faster ios::sync_with_stdio(false);cin.tie(nullptr)int main() {ll N,M;cin >> N >> M;vector<ll> A(N);rep(i,N) cin >> A[i];sort(all(A));vector<ll> B;set<pair<ll,ll>> now;rep(i,N){if(A[i]==0) continue;bool ok=true;if(i>1){auto it=*now.begin();if(it.fi<A[i]){cout << -1 << endl;return 0;}if(it.fi==A[i]) ok=false;}if(ok){B.push_back(A[i]);now.insert({A[i]*2,A[i]});}while(1){auto now_it=*now.begin();if(now_it.fi==A[i]){now.erase(now_it);now.insert({now_it.fi+now_it.se,now_it.se});}else{break;}}}set<ll> s;rep(i,N) s.insert(A[i]);bool ans=true;rep(i,B.size()){for(ll j=0;j<=M;j+=B[i]){if(s.find(j)==s.end()) ans=false;if(!ans) break;}if(!ans) break;}if(ans){cout << B.size() << endl;rep(i,B.size()){cout << B[i] << " ";}cout << endl;}else{cout << -1 << endl;}return 0;}