1 条题解
-
0
#include<bits/stdc++.h> using namespace std; // [1] 全局数组,存储每组测试用例的住户位置,容量满足题目n≤1000的限制 int arr[2000]; int main(){ // [2] 读取测试用例的组数 int t; cin>>t; // [3] 循环处理每组测试用例,直到所有用例处理完成 while(t--){ // [4] 读取当前测试用例的住户数量 int n; cin>>n; // [5] 读取n个住户的位置,存入数组arr for(int i=0;i<n;i++) cin>>arr[i]; // [6] 对住户位置数组进行升序排序,为后续找中位数做准备 sort(arr,arr+n); // [7] 确定商店的最优位置:取排序后的中位数(n/2下标对应较大的中位数,满足题目“多最优位置选最大”的要求) int avg=arr[n/2]; // avg:最终确定的商店位置 // [8] 初始化所有住户到商店的距离总和为0 int sum=0; // [9] 遍历所有住户,计算到商店位置的距离总和 for(int i=0;i<n;i++){ // 计算当前住户与商店的距离(等价于abs(arr[i] - avg)) if(arr[i]<avg) sum+=avg-arr[i]; else sum+=arr[i]-avg; } // [10] 输出商店位置和距离总和 cout<<avg<<" "<<sum<<endl; } return 0; }
- 1
信息
- ID
- 1046
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 2
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者