原题链接
题解
C++存在一种pair类型,并且可以指定first/second的数据类型,所以可以使用它来代替只有两个元素的结构体
利用sort对数据进行排序,将取水时间从小到大排序
为什么要从小到大,简单试一下就可以试出来,比如
当顺序是 10 20 30 ,总花费时间是70秒,而 30 20 10 花费140秒
#include "iostream"
#include "algorithm"
#include "iomanip"
using namespace std;
int main(){
int n,sum=0,ans=0;
cin>>n;
auto node=new pair<int,int>[n];
for(int i=0;i<n;i++){
cin>>node[i].first;
node[i].second=i+1;
}
sort(node,node+n,[](auto o,auto p)->bool{
return o.first<p.first;
});
for(int i=0;i<n-1;i++){
sum+=node[i].first;
ans+=sum;
}
for(int i=0;i<n;i++){
cout<<node[i].second<<' ';
}
cout<<endl;
cout<<fixed<<setprecision(2)<<double(ans)/n;
}
标签:node,洛谷,int,auto,排队,second,P1223,include,first
From: https://www.cnblogs.com/ChengMao/p/17111655.html