当前位置: 首页 > news >正文

题单:排队接水1

题目描述

有 nn 个人在一个水龙头前排队接水,假如每个人接水的时间为 TiTi​。

按输入的顺序,将 nn 个人的接水时间从 1∼n1∼n 进行编号。

请编程找出这 nn 个人排队的一种顺序,使得 nn 个人的平均等待时间最小。

输入格式

第一行为 nn;

第二行分别表示第 11 个人到第 nn 个人每人的接水时间 T1T1​、T2T2​、…、TnTn​,每个数据之间有 11 个空格。

输出格式

输出有两行,第一行为一种排队顺序,即 11 到 nn 的一种排列;

第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。

样例 #1

样例输入 #1

10 
56 12 1 99 1000 234 33 55 99 812

样例输出 #1

3 2 7 8 1 4 9 6 10 5
291.90

提示

对于 100%100% 的数据:1≤n≤100001≤n≤10000,1≤Ti≤1061≤Ti​≤106,不保证 TiTi​ 不重复。

当 TiTi​ 重复时,按照输入顺序即可(即编号小的在前

#include<bits/stdc++.h>
#include<iomanip>
using namespace std;
struct node{
	int id;
	int time;
}a[100055];
bool cmp(node x,node y)
{
	return x.time<y.time||x.time==y.time&&x.id<y.id;
}
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		a[i].id=i;
		cin>>a[i].time;
	} 
	double ans=0;
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		ans+=(n-i)*a[i].time;
		cout<<a[i].id<<" ";
	}
	cout<<endl;
	cout<<fixed<<setprecision(2)<<ans/n;
	return 0;
}

相关文章:

  • ORACLE RAC ASM双存储架构下存储部分LUN异常的处理
  • 基于springboot的电影院管理系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 4-Taurus平台 LCD驱动支持DRM框架移植
  • Spring事务失效场景
  • android音频概念解析
  • mybatisplus雪花算法id重复日记
  • PicFlow:一个图片处理与上传工作流工具(图床上传工具)
  • Debian12生产环境配置笔记
  • systemctl restart 和 systemctl reload 和 systemctl daemon-reload 对比 笔记250322
  • SOFABoot-10-聊一聊 sofatboot 的十个问题
  • QEMU 引导时分离内核和文件系统
  • Collectors.toList / list 转 list
  • Netty——BIO、NIO 与 Netty
  • 第十六章:Specialization and Overloading_《C++ Templates》notes
  • ‌App Store美学竞争:如何通过广告素材分析实现ASO弯道超车‌
  • 基于Spring Boot 的在线教育系统(源码+lw+部署文档+讲解),源码可白嫖!
  • PRODIGY: “不折腾人”的蛋白-蛋白/蛋白-小分子结合能计算工具
  • SEO长尾关键词精准布局
  • 为什么后端路由需要携带 /api 作为前缀?前端如何设置基础路径 /api?
  • 批量图片压缩工具,高效减小文件大小并保持质量
  • 洛阳原副市长收礼品消费卡,河南通报6起违反八项规定典型问题
  • 我国核电总体规模首次跃居世界第一,发电量持续增长
  • 大家聊中国式现代化|邓智团:践行人民城市理念,开创人民城市建设新局面
  • 王宝强谈《棋士》:饰演这个灰度人物有一种被割裂的痛苦
  • 小马智行彭军:今年是Robotaxi量产元年,有望3年后盈亏平衡
  • 詹妮弗·劳伦斯、罗伯特·帕丁森新片入围戛纳主竞赛单元