2点間距離の最大と最小
問題
B – 2点間距離の最大と最小 ( Maximum and Minimum )
プログラミング初級者から上級者まで楽しめる、競技プログラミングコンテストサイト「AtCoder」。オンラインで毎週開催プログラミングコンテストを開催しています。競技…
記録
- 2021/1/14 解法思いつかず。
解法
- 距離の最大値は全ての点が直線上に並んでいる状態。
- 距離の最小値は次の手順で計算する。
- 【手順1】距離の最大値を探す。
- 【手順2】距離の最大値 – (距離の合計 – 距離の最大値)と、\(0\) で小さい方が答え。
コード例
#include <bits/stdc++.h> using namespace std; #include <atcoder/all> using namespace atcoder; using ll = long long; using P = pair<int, int>; #define rep(i, n) for(int i = 0; i < (n); ++i) // using mint = modint998244353; // using mint = modint1000000007; // const int mod = 1000000007; // const ll INF = 1LL << 60; // const int INF = 1001001001; int main() { int N; cin >> N; vector<ll> d(N); ll mx = 0; rep(i, N) { cin >> d[i]; mx += d[i]; } ll mn = 0; rep(i, N) { mn = max(mn, d[i]); } cout << mx << endl; cout << max(0LL, mn - (mx - mn)) << endl; return 0; }