結果
問題 | No.2806 Cornflake Man |
ユーザー | t98slider |
提出日時 | 2024-07-19 06:04:14 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 47 ms / 2,000 ms |
コード長 | 1,053 bytes |
コンパイル時間 | 2,573 ms |
コンパイル使用メモリ | 210,844 KB |
実行使用メモリ | 6,740 KB |
最終ジャッジ日時 | 2024-07-19 06:04:18 |
合計ジャッジ時間 | 4,301 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 17 |
ソースコード
#include <bits/stdc++.h> using namespace std; using ll = long long; int main(){ ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; vector<int> a(n), ans; for(auto &&v : a) cin >> v; sort(a.begin(), a.end()); priority_queue<pair<int,int>, vector<pair<int,int>>, greater<pair<int,int>>> pq; ans.emplace_back(a[1]); pq.emplace(2 * a[1], a[1]); for(int i = 2; i < n; i++){ if(pq.top().first < a[i]){ cout << -1 << '\n'; return 0; } bool flg = true; while(a[i] == pq.top().first){ auto [v, d] = pq.top(); pq.emplace(v + d, d); pq.pop(); flg = false; } if(flg){ ans.emplace_back(a[i]); pq.emplace(2 * a[i], a[i]); } } if(pq.top().first <= m){ cout << -1 << '\n'; return 0; } cout << ans.size() << '\n'; for(int i = 0; i < ans.size(); i++){ cout << ans[i] << (i + 1 == ans.size() ? '\n' : ' '); } }