洛谷 P1223 排队接水

原题链接

image

题解

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;
}

posted @ 2023-02-11 14:44  Cheng_Mao  阅读(39)  评论(0)    收藏  举报