題目描述
你是一只小跳蛙,你特別擅長在各種地方跳來跳去。
這一天,你和朋友小 F 一起出去玩耍的時候,遇到了一堆高矮不同的石頭,其中第?ii?塊的石頭高度為 hi?,地面的高度是 h0?=0。你估計著,從第?ii?塊石頭跳到第?j?塊石頭上耗費的體力值為?(h_i - h_j) ^ 2,從地面跳到第?i?塊石頭耗費的體力值是?(h_i) ^ 2。
為了給小 F 展現你超級跳的本領,你決定跳到每個石頭上各一次,并最終停在任意一塊石頭上,并且小跳蛙想耗費盡可能多的體力值。
當然,你只是一只小跳蛙,你只會跳,不知道怎么跳才能讓本領更充分地展現。
不過你有救啦!小 F 給你遞來了一個寫著 AK 的電腦,你可以使用計算機程序幫你解決這個問題,萬能的計算機會告訴你怎么跳。
那就請你——會寫代碼的小跳蛙——寫下這個程序,為你 NOIp AK 踏出堅實的一步吧!
輸入格式
輸入一行一個正整數?n,表示石頭個數。
輸入第二行?n?個正整數,表示第?i 塊石頭的高度 hi?。
輸出格式
輸出一行一個正整數,表示你可以耗費的體力值的最大值。
輸入輸出樣例
輸入 #1復制
2 2 1
輸出 #1復制
5
輸入 #2復制
3 6 3 5
輸出 #2復制
49
_____________________________________________________________________________
既然題目要求消耗體力最大值,就從沒有跳過中最低的跳到最高的然后,最高的跳到就從沒有跳過中最低的........直到條到沒有;
友情提示,記得開longlong;
寫作不易,點個贊唄!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
_____________________________________________________________________________
#include <bits/stdc++.h>
using namespace std;
long long a[1000005],n,ans;
int main(){cin>>n;for(int i=1;i<=n;i++)cin>>a[i];sort(a+1,a+1+n);int i=0,j=n;while(i<j){if(i==j)break;ans+=(a[j]-a[i])*(a[j]-a[i]);i++;if(i==j)break;ans+=(a[j]-a[i])*(a[j]-a[i]);j--;if(i==j)break;}cout<<ans;
}