全部评论 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;
    }

    1周前 来自 江苏

    0
  • 第一种做法:用结构体储存,例如

    struct node{
        int idx, val;
    }
    
    cin >> a[i].val, a[i].idx = i;
    

    然后自定义 cmp 函数排序,结果就是 a[i].idx

    第二种做法:lower_bound

    1周前 来自 广东

    0

热门讨论