#include //#include using namespace std; //using namespace atcoder; using ll = long long; //using mint = modint998244353; int main(){ cin.tie(nullptr); ios_base::sync_with_stdio(false); /* x>=0, y>=0でない限り隣接する絶対値の和を足す関数。 よって、非負のものは隣接させた方が良い。 非負の部分の両端は1回足され、 負の部分は両端にない限りは2回足される。 ここで非負の部分に注目すると階段状になっていればどんな並べ方をしても階差の絶対値の和は同じ あとは2パターンを探す。 (1)負正負のパターン (2)負正のパターン */ ll N, a, ans=9e18; cin >> N; deque neg, pos; for (int i=0; i> a; if (a >= 0) pos.push_back(a); else neg.push_back(a); } sort(pos.begin(), pos.end()); sort(neg.begin(), neg.end()); if (!neg.empty()){ ll sm=0; deque all; all.push_back(neg[0]); all.insert(all.end(), pos.begin(), pos.end()); for (int i=neg.size()-1; i>=1; i--) all.push_back(neg[i]); for (int i=0; i all; all.insert(all.end(), pos.begin(), pos.end()); for (int i=neg.size()-1; i>=0; i--) all.push_back(neg[i]); for (int i=0; i