
这题就属于那种,看着特别阴间的,实际上如果想过来的话其实还算简单。
两个值,第一个是有几组,也就是之后要用到的要加几个值。
第二个是不同的数字,让你分组。
说是让分组,其实就是让你好好想想每次应该怎么把数字加起来。
首以上面的 1 2 5 5 5 8 举例子。
我们排好序之后,从后往前加。
每次都选的是倒数第二大的。
可以看图理解:

每次我们都是将最大的两个和最小的分一组,保证中间值是最大的。
下面看代码:
#include#include #include using namespace std; int main() { int n; cin>>n; vector v(n*3,0); for(int i = 0;i >v[i]; } sort(v.begin(),v.end()); long sum = 0; for(int i = n;i