寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume31-3137 : Team Making

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Team Making"
https://onlinejudge.u-aizu.ac.jp/problems/3137
今年の KUPC はチームで参加できることを聞きつけたあなたは、友達に声をかけてチームで出場することにしました。
最終的に、あなたを含めて 4 人が集まりました。
個人の強さはレーティングで表され、4 人のレーティングはそれぞれ a, b, c, d です。
あなたたちは 2 人ずつの 2 チームに分かれることにしました。
このとき、チームの強さはそのチームを構成する 2 人のレーティングの和で定義されます。
また、チーム間の実力差はそれぞれのチームの強さの差の絶対値で定義されます。
あなたはチーム間の実力差ができるだけ小さくなるようにチーム分けを行いたいです。
うまくチーム分けを行ったときの、チーム間の実力差の最小値を求めてください。

僕が作成、提出したコードは、以下のとおりです。

Aizu Online Judge in C++ #Volume31-3137 : Team Making
/*
Aizu Online Judge in C++ #Volume31-3137 : Team Making
https://onlinejudge.u-aizu.ac.jp/problems/3137
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
    vector<int> v(4);
    cin>>v[0]>>v[1]>>v[2]>>v[3];
    sort(v.begin(),v.end());
    int sum1=v[0]+v[3];
    int sum2=v[1]+v[2];
    cout<<abs(sum1-sum2)<<endl;
    return 0;
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/