この問題は完全に勘違いしてた。。
勘違い
例)4グループ作成で1-12の数字が与えられる。
とりあえずsortして、
(1,2,3) (4,5,6) (7,8,9) (10,11,12)
7+8+9=24でいいっしょ?と思ったらWAの評価。
よーく見たら、下記の通りそのまんまで、チームの作り方に指定はなく、とりあえず下記になる決め合わせを決める。
N組のチームの強さの和としてありうる値のうち、最大の値を求めてください。
(1,5,6) (2,7,8) (3,9,10) (4,11,12)
5+7+9+11 = 32、ということでこっちのほうが最大化できる。
考えたこと
真ん中の数字を足し合わせばいいだけなので、正味xはどうでもいい。
12要素があるsortされたarrayがあるとすれば、それぞれ真ん中の値を取得して合計を求めるだけ。
(1,2,3,4,5,6,7,8,9,10,11,12)
(x, 11, 12) - 真ん中のarrayの位置はarray.length-2 (x, 9, 10) - 真ん中のarrayの位置はarray.length-4 (x, 7, 8) - 真ん中のarrayの位置はarray.length-6 (x, 5, 6) - 真ん中のarrayの位置はarray.length-8
じゃあ与えられたグループ数分ループさせて(iは1から始めさせる)、array.length-2*i
とすれば中央の値とれるやん、となりました
参考
Arrays.sort(strength); long targetStrength = 0; for(int i=1; i<=givenNumber; i++) { //givenNumberはグループ数です targetStrength += strength[strength.length-2*i]; }