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/