#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int compare(const void*a,const void*b)
{
int a1=*(int*)a;
int b1=*(int*)b;
if(a1>b1)return 1;
if(a1<b1)return -1;
return 0;
}
int main()
{
long long n,h[400],e=0;
long long s=0;
scanf("%d",&n);
while(e<n)
{
scanf("%d",&h[e]);
e++;
}
qsort(h,n,sizeof(int),compare);
if(n!=0)s=h[n-1]*h[n-1];
int k=0;
for(int i=0,j=n-1;i<=j;i++)
{
if(i==j)
{
if(k!=0)s+=(h[j]-k)*(h[j]-k);
break;
}
s+=(h[j]-h[i])*(h[j]-h[i]);
j--;
k=h[i];
}
printf("%lld",s);
return 0;
}
还有这个
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
int compare(const void*a,const void*b)
{
int a1=*(int*)a;
int b1=*(int*)b;
if(a1>b1)return 1;
if(a1<b1)return -1;
return 0;
}
int main()
{
int n,h[400],e=1;
long long s=0;
scanf("%d",&n);
h[0]=0;
while(e<=n)
{
scanf("%d",&h[e]);
e++;
}
qsort(h,n+1,sizeof(int),compare);
int k=0;
for(int i=0,j=n;i<j;)
{
s+=pow(h[i]-h[j],2);
i++;
if(i==j)break;
s+=pow(h[i]-h[j],2);
j--;
}
printf("%lld",s);
return 0;
}
这两个思路是一样的,为什么一个是10分,一个可以过