正常AC代码
#include"iostream"
#include"cstdio"
#include"algorithm"//为了用sort快排
using namespace std;
struct a
{
int b,num;//定义结构体a
};
bool cmp(a x,a y)//定义“小于”运算符
{
return x.b<y.b;
}
int main()
{
struct a a[1010];//定义结构体数组
int n,i,j;
double time=0;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>a[i].b;
a[i].num=i;//序号存起来
}
sort(a+1,a+n+1,cmp);//排序
for(i=1;i<=n;i++)
{
cout<<a[i].num<<" "; //先把简单的做了,输入由小到大的编号
}
cout<<endl;//要换行
for(j=n-1;j>=1;j--) //等待人数的计数器,由n-1开始
{
i=n-j;//这是个规律,当前最少时间的人序号和要等待的人数之和=n
time+=a[i].b*j; //累加
}
printf("%.2lf",time/n);//算平均,保留两位小数
return 0;
}
部分WA代码
// NUDTer2026
//2024/4/21
#include<iostream>
#include<malloc.h>
#include<algorithm>
using namespace std;
typedef struct People{
int time;
int index;
}people;
bool cmp(people p1,people p2){
return p1.time<p2.time;
}
int main()
{
int n=0;
cin>>n;
people* list = new people[1010];
for(int i = 0;i<n;i++)
{
cin>>list[i].time;
list[i].index = i+1;
}
sort(list,list+n,cmp);
float sum=0;
for(int i =0;i<n;i++)
{
sum+= list[i].time*(n-1-i);
printf("%d ",list[i].index);
}
printf("\n%.2lf",sum/n);
delete list;
return 0;
}
/*
*/