結果
問題 | No.3016 ハチマキおじさん |
ユーザー |
![]() |
提出日時 | 2025-01-25 14:10:12 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 212 ms / 2,000 ms |
コード長 | 1,397 bytes |
コンパイル時間 | 6,365 ms |
コンパイル使用メモリ | 332,388 KB |
実行使用メモリ | 14,988 KB |
最終ジャッジ日時 | 2025-01-25 23:09:47 |
合計ジャッジ時間 | 11,053 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 31 |
ソースコード
#include <bits/stdc++.h> #include <atcoder/all> using namespace std; using namespace atcoder; #define all(x) (x).begin(), (x).end() #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define rrep(i, n) for(int i = (int)(n - 1); i >= 0; i--) template <typename T> bool chmax(T &a,const T &b){if(a<b){a=b;return true;}return false;} template <typename T> bool chmin(T &a,const T &b){if(a>b){a=b;return true;}return false;} using ll = long long; #define int ll using vi = vector<int>; using vvi = vector<vector<int>>; using vb = vector<bool>; using vvb = vector<vector<bool>>; using vs = vector<string>; using pii = pair<int, int>; /* using mint = modint; using vm = vector<mint>; using vvm = vector<vector<mint>>; */ signed main(){ int n; cin >> n; vi a(n), b(n - 1); rep(i, n) cin >> a.at(i); rep(i, n - 1) cin >> b.at(i); sort(all(a)); sort(all(b)); segtree<int, [](int x, int y){return x + y;}, []{return 0ll;}> seg(n - 1); rep(i, n - 1) seg.set(i, abs(a.at(i) - b.at(i))); int min_score = seg.all_prod(); set<int> ans = {a.at(n - 1)}; for(int i = n - 2; i >= 0; i--){ seg.set(i, abs(a.at(i + 1) - b.at(i))); if(seg.all_prod() < min_score){ min_score = seg.all_prod(); ans.clear(); ans.insert(a.at(i)); } if(seg.all_prod() == min_score) ans.insert(a.at(i)); } cout << ans.size() << endl; for(auto &w : ans) cout << w << ' '; cout << '\n'; }