马拉松后记
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 37 Solved: 13
Submit Status Web Board
Description
毛毛雨学姐跑完了半程马拉松,接下来决定去参加山地越野赛了,主办方听说毛毛雨学姐是一位ACMer,就想让她来帮忙解决一下
赛场问题:已知在山地越野场地有N座土坡(1<=N<=1000),每座土坡都有一个在0到100之间的整数海拔,考虑到参赛选手
大多都是业余选手,所以主办方决定将土坡的高度差限定在17米(即最高和最低相差不超过17米),然而想改变一座土坡x米需
要花费x^2元(改变只能是整数x米),请你们帮助毛毛雨学姐来计算出主办方最少的支出。
Input
第一行:一个整数N
第二行至第N+1行:每座土坡的高度
多组测试样例
Output
主办方的最少支出
Sample Input
5
4
2
0
1
2
1
2
4
Sample Output
18
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int min,h,i,sum;
int n,s[1005];
while(~scanf("%d",&n))
{
for(i=0;i<n;i++)
scanf("%d",&s[i]);
sort(s,s+n);
min=0x3f3f3f;
for(h=s[n-1];h>=s[0];h--)//枚举最高的土坡的高度
{
sum=0;
for(i=0;i<n;i++)
{
if(s[i]>h)
sum+=(s[i]-h)*(s[i]-h);
else if(s[i]<h-17)
sum+=(h-17-s[i])*(h-17-s[i]);
}
if(sum<min)
min=sum;
}
printf("%d\n",min);
}
return 0;
}