题目链接 https://www.luogu.com.cn/problem/P4995
分析
你说他是个水题吧,贪心思想又挺好,你说它不水吧,它的确挺水。
因为让求总和最大所以直接贪心,每次取排序后两端的就好,然后我就写了个谜一般的双指针,最后要记录一下(last)因为最后一次跳的时候不会记录上,然后就没啥了,感觉这个思想还是要好好体会的。
开(longlong!!!!!)
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;
const int N=1e3+10;
ll a[N];
int main(){
int n;
ll ans=0;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
ans+=a[n]*a[n];
int i=1,j=n,cnt=1,last=a[n];
while(i!=j){
ans+=(a[i]-a[j])*(a[i]-a[j]);
if(cnt)last=a[i],j--;
else last=a[j],i++;
cnt^=1;
}
ans+=(a[i]-last)*(a[i]-last);
cout<<ans;
}