#include <stdio.h>
#include <string.h>
#include <ctype.h>
void change(double a[2][1000],int i,int j)
{
double p;
p=a[0][i];
a[0][i]=a[0][j];
a[0][j]=p;
p=a[1][i];
a[1][i]=a[1][j];
a[1][j]=p;
}
void quick(double a[2][1000],int left,int right)
{
if(left>=right)
return;
int last=left;
change(a,left,(left+right)/2);
for(int i=left+1;i<=right;i++)
{
if(a[1][i]<=a[1][left])
change(a,++last,i);
}
change(a,left,last);
quick(a,left,last-1);
quick(a,last+1,right);
}
//上为快速排序函数
int main()
{
int n;
double a[2][1000]={0};
a[0][0]=1;
scanf("%d",&n);
for(int i=1;i<n;i++)
a[0][i]=a[0][i-1]+1;
for(int i=0;i<n;i++)
scanf("%lf",&a[1][i]);
quick(a,0,n-1);
for(int i=0;i<n;i++)
printf("%.0lf ",a[0][i]);
printf("\n");
double t=0,tt;
for(int i=n-1;i>=0;i--)
{
tt=0;
for(int j=i-1;j>=0;j--)
tt+=a[1][j]/(double)n;
t+=tt;
}
printf("%.2lf",t);
return 0;
}
仅数据点1报错,但数据点1就是输入样例,输出结果没发现有问题,求各位大佬救救