#include <iostream>
#include <vector>
#include <algorithm>
#include <set>
#include <queue>
#include <stack>
#include <map>
#include <string>
#include <math.h>
#include <array>
#define rep(i, s, e) for (ll i = s; i < e; i++)
#define upmax(a, b) a = max(a, b)
#define upmin(a, b) a = min(a, b)
using namespace std;
using ll = long long;
using vll = vector<ll>;
using vvll = vector<vll>;
using vvvll = vector<vvll>;
using pll = pair<ll, ll>;
using vpll = vector<pll>;
using vvpll = vector<vpll>;
const ll INF = 1e18;
ll solve1D(vll & arr, ll n) {
sort(arr.begin(), arr.end());
vll pref(n);
pref[0] = arr[0];
rep(i, 1, n) pref[i] = pref[i - 1] + arr[i];
ll best = pref[n - 1] - n * arr[0];
ll bestX = arr[0];
rep(i, 0, n) {
// Put x after arr[i]:
ll l = i + 1;
ll sl = pref[i];
ll cur = pref[n - 1] - 2 * sl;
ll x = arr[i];
if (2 * l - n < 0 && i < n - 1) {
x = arr[i + 1];
}
cur += x * (2 * l - n);
if (cur < best) {
best = cur;
bestX = x;
}
}
return bestX;
}
void solve() {
ll n;
cin >> n;
vll x(n), y(n);
rep(i, 0, n) {
cin >> x[i] >> y[i];
}
ll ansX = solve1D(x, n);
ll ansY = solve1D(y, n);
cout << ansX << ' ' << ansY << '\n';
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
solve();
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |