排队打水

#include<bits/stdc++.h>
using namespace std;

int main(){
	//1、理解和分析题意
	// 找出已知信息
	// 已知:排队打水的人数、排队打水的每个人需要的打水时间
    // 未知:最优的排队打水顺序--》打水用时最少得排前面
	// 未知:平均等待时间--》每个人等待的时间和除以人数
	// 中间未知数:打水时间的排序,打水编号排序,每个人等待的时间和
	
	// 2、定义变量
	int n,num[1010],t[1010],ag,time_sum=0;//人数,序号,时间
	
	// 3、输入已知
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>t[i];
		num[i]=i;
	}
	
	// 4、分步骤运算得出未知(答案)
	// 4.1 排序
	for(int i=1;i<=n-1;i++)
		for(int j=1;j<=n-i;j++)
			if(t[j]>t[j+1]){
				swap(t[j],t[j+1]);
				swap(num[j],num[j+1]);
			}
	// 4.2 每个人等待的时间和
	for(int i=1;i<=n;i++)time_sum+=t[i]*(n-i);
	
	// 5.按题目要求输出答案
	// 5.1 最优的排队打水顺序
	for(int i=1;i<=n;i++)cout<<num[i]<<" ";
	cout<<endl;
	
	// 5.2 平均等待时间--》每个人等待的时间和除以人数
	printf("%.2f",time_sum*1.0/n);
	return 0;
}

0 条评论

目前还没有评论...