洛谷P1223 排队接水

来源:互联网 发布:手机淘宝差评改好评 编辑:程序博客网 时间:2024/05/16 10:07

2017.2.10

本题涉及排序

代码如下

#include <iostream>  #include <algorithm> #include <stdio.h> struct num{    int n;    int k;}a[1001]; int b[1001]; using namespace std;  bool cmp(num a ,num b)  {      return a.k < b.k ;           //从小到大排序,把 < 换成 > 就是从大到小   }    int main()  {      freopen("1.txt","r",stdin);//打开文件1.txt用来输入,文件需存在      freopen("2.txt","w",stdout);//打开文件2.txt用来输出,自动创建该文件    int n,i;    double e=0,f=0;    cin>>n;    for(int i=1;i<=n;i++){cin>>a[i].k;a[i].n=i;    }    sort(a+1,a+n+1,cmp);    for(int i=1;i<=n;i++)    {    if(i<n)cout<<a[i].n<<" ";    if(i==n)cout<<a[i].n;    for(int j=i;j<=n;j++)        {            b[j]+=a[i].k;//每个人在第i个人接水时候所等待的时间        }        b[i]-=a[i].k;//本人接水是不等待,所以再减掉        }     for(int i=1;i<=n;i++)    {        e+=b[i];//所有人等待总时间    }cout<<endl;    printf("%.2f",e*1.0/n);  return 0;}


0 0
原创粉丝点击