#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>

using namespace std;

bool compare(pair<int, int> p1, pair<int, int> p2){
    return p1.second < p2.second;
}

int main(){
    int n;
    cin >> n;
    vector<pair<int, int>> time(n);
    for(int i=0; i<n; i++){
        cin >> time[i].second;
        time[i].first = i+1;
    }
    sort(time.begin(), time.end(), compare);
    vector<int> order(n);
    double total_wait_time = 0;
    for(int i=0; i<n; i++){
        order[i] = time[i].first;
        total_wait_time += time[i].second * (n-i-1);
    }
    cout << fixed << setprecision(2);
    for(int i=0; i<n; i++){
        cout << order[i] << " ";
    }
    cout << endl;
    cout << total_wait_time / n << endl;
    return 0;
}
C++ 最优排队打水算法:最小化平均等待时间

原文地址: https://www.cveoy.top/t/topic/pREp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录