結果
問題 | No.3016 ハチマキおじさん |
ユーザー |
![]() |
提出日時 | 2025-01-25 23:56:17 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 87 ms / 2,000 ms |
コード長 | 2,047 bytes |
コンパイル時間 | 6,696 ms |
コンパイル使用メモリ | 259,940 KB |
実行使用メモリ | 13,716 KB |
最終ジャッジ日時 | 2025-01-25 23:56:48 |
合計ジャッジ時間 | 7,801 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge13 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 31 |
ソースコード
/**author: shobonvipcreated: 2025.01.25 23:39:01**/#include<bits/stdc++.h>using namespace std;//* ATCODER#include<atcoder/all>using namespace atcoder;typedef modint998244353 mint;//*//* BOOST MULTIPRECISION#include<boost/multiprecision/cpp_int.hpp>using namespace boost::multiprecision;//*/typedef long long ll;#define rep(i, s, n) for (int i = (int)(s); i < (int)(n); i++)#define rrep(i, s, n) for (int i = (int)(n)-1; i >= (int)(s); i--)#define all(v) v.begin(), v.end()template <typename T> bool chmin(T &a, const T &b) {if (a <= b) return false;a = b;return true;}template <typename T> bool chmax(T &a, const T &b) {if (a >= b) return false;a = b;return true;}template <typename T> T max(vector<T> &a){assert(!a.empty());T ret = a[0];for (int i=0; i<(int)a.size(); i++) chmax(ret, a[i]);return ret;}template <typename T> T min(vector<T> &a){assert(!a.empty());T ret = a[0];for (int i=0; i<(int)a.size(); i++) chmin(ret, a[i]);return ret;}template <typename T> T sum(vector<T> &a){T ret = 0;for (int i=0; i<(int)a.size(); i++) ret += a[i];return ret;}int main(){ios_base::sync_with_stdio(false);cin.tie(NULL);int n; cin >> n;vector<ll> a(n);rep(i,0,n) {cin >> a[i];}vector<ll> b(n-1);rep(i,0,n-1) {cin >> b[i];}sort(all(b));vector<pair<ll,int>> p(n);rep(i,0,n) p[i] = pair(a[i],i);sort(all(p));rep(i,0,n) a[i] = p[i].first;vector<ll> rui_left(n);vector<ll> rui_right(n);rep(i,0,n-1){rui_left[i+1] = rui_left[i] + abs(b[i] - a[i]);}rep(i,0,n-1){rui_right[i+1] = rui_right[i] + abs(b[n-2-i] - a[n-1-i]);}vector<int> ansl;ll tmp = 1e18;rep(i,0,n){if (chmin(tmp, rui_left[i] + rui_right[n-1-i])) {ansl.clear();}if (rui_left[i] + rui_right[n-1-i] == tmp) {ansl.push_back(p[i].first);}}sort(all(ansl));ansl.erase(unique(all(ansl)),ansl.end());int m = (int)ansl.size();cout << m << '\n';rep(i,0,m) {cout << ansl[i];if (i == m-1) cout << '\n';else cout << ' ';}}