如何把原来的id顺序改变为排序后的顺序?
2025-12-06 19:42:33
发布于:河北
32阅读
0回复
0点赞
求教。。。
全部评论 2
#include<bits/stdc++.h>
using namespace std;
const int maxn=1001;
struct stu{
int time;
int id;
}a[maxn];
bool cmp(stu a,stu b){
if(a.time!=b.time) return a.time<b.time;
return a.id<b.id;
}
int main(){
int n;
double sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++){
a[i].id=i;
cin>>a[i].time;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<n;i++){
printf("%d ",a[i].id);
sum+=i*a[n-i].time;
}
printf("%d\n",a[n].id);
printf("%.2f",sum/n);
return 0;
}2025-12-07 来自 江苏
0第一种做法:用结构体储存,例如
struct node{ int idx, val; }cin >> a[i].val, a[i].idx = i;然后自定义
cmp函数排序,结果就是a[i].idx。第二种做法:
lower_bound。2025-12-06 来自 广东
0















有帮助,赞一个