2 solutions

  • 1
    @ 2026-1-18 15:18:19

    简易写法:

    #include<bits/stdc++.h>
    using namespace std;
    int n;
    struct Node{
    	int idx;
    	int time;
    }arr[1010];
    bool cmp(Node a,Node b){
    	if(a.time<b.time) return 1;
    	else if(a.time==b.time&&a.idx<b.idx) return 1;
    	else return 0;
    }
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>arr[i].time;
    		arr[i].idx=i;
    	}
    	sort(arr+1,arr+n+1,cmp);
    	double cnt=0;
    	for(int i=1;i<=n;i++){
    		cnt=cnt+(n-i)*arr[i].time;
    		cout<<arr[i].idx<<' ';
    	}
    	cout<<endl<<fixed<<setprecision(2)<<cnt/n;
    	return 0;
    }

    Information

    ID
    1018
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    5
    Tags
    (None)
    # Submissions
    46
    Accepted
    15
    Uploaded By